如何将清单版本 2 迁移到 v3 以进行 chrome 扩展?

Con*_*fly 13 google-chrome-extension

我无法理解如何将我的 chrome 扩展清单 v2 升级到 v3

我检查了https://developer.chrome.com/extensions/migrating_to_manifest_v3但它没有谈论 manifest.json

知道在我的清单中需要更改什么:-

    "name": "My Extension",
    "version": "1.0.0",
    "short_name": "Ex",
    "author": "User",
    "description": "cool chrome ex",
    "browser_action": {
        "default_title": "ex",
        "default_icon": "img/logo.png"
    },
    "options_page": "options.html",
    "options_ui": {
        "page": "options.html",
        "open_in_tab": true
    },
    "background": {
        "scripts": [
            "js/background.js"
        ]
    },
    "permissions": [
        "tabs",
        "background",
        "storage"
    ],
    "icons": {
        "128": "img/logo128.png"
    },
    "content_scripts": [
        {
            "run_at": "document_end",
            "matches": [
                "https://conferfly.com/*",
                "https://meet.google.com/*",
                "https://teams.microsoft.com/*",
                "https://*.zoom.us/*"
            ],
            "js": [
                "js/main.js",
                "js/injected.js"
            ],
            "css": [
                "css/main.css"
            ]
        }
    ],
    "web_accessible_resources": [
        "js/options.js",
        "js/main.js",
        "js/injected.js"
    ],
    "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
} 
Run Code Online (Sandbox Code Playgroud)

先感谢您


这是用于授予扩展

new*_*dev 20

我正在寻找同样的东西。多亏了用户 wOxxOm 的帮助,我找到了清单文件中要更改的内容。以下是如何manifest.json从 v2迁移到 v3的示例。

第一件事是将manifest_version密钥从更改23

//Manifest v2
"manifest_version": 2

//Manifest v3
"manifest_version": 3
Run Code Online (Sandbox Code Playgroud)

作为写进清单迁移指南,pageAction以及browserActionAPI将下统一actionAPI。这意味着您需要更改browser_actionpage_action键入action

//Manifest v2
"browser_action": {...}
"page_action": {...}

//Manifest v3
"action": {...}
Run Code Online (Sandbox Code Playgroud)

后台页面和后台脚本在 manifest v3 中已弃用。他们被服务人员取代。这意味着background清单文件的部分需要以这种方式进行修改

//Manifest v2
"background": {
 "scripts": ["js/background.js"]
}

//Manifest v3
"background": {
 "service_worker": "js/background.js"
}
Run Code Online (Sandbox Code Playgroud)

声明需要从web访问的打包资源,需要web_accessible_resources改成这样

//Manifest v2
"web_accessible_resources": [
        "js/options.js",
        "js/main.js",
        "js/injected.js"
]

//Manifest v3
"web_accessible_resources": [{
 "resources": ["js/options.js","js/main.js","js/injected.js"],
 "matches": [],
 "extension_ids": []
}]
Run Code Online (Sandbox Code Playgroud)

v3 中的内容安全策略是一个对象

//Manifest v2
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'" 

//Manifest v3
"content_security_policy": {
 "extension_pages": "script-src 'self' 'unsafe-eval'; object-src 'self'",
 "sandbox": "..."
}
Run Code Online (Sandbox Code Playgroud)

要了解有关您的更多信息,请查看此链接链接

  • 哇,伙计。你救了我的命。为了让其他人知道。即使尚未使用“matches”和“extension_ids”,它们也必须存在。 (10认同)
  • 哇,这些迁移指南太糟糕了。 (7认同)
  • 很好的答案!仅供参考,[Manifest v3 不再支持 CSP 中“extension_pages”的“unsafe-eval”](https://developer.chrome.com/docs/extensions/mv3/intro/mv3-migration/#:~:text =MV3%20不允许%20某些%20CSP%20修改)。 (3认同)