将扩展迁移到 Manifest v3

Migrating Extension to Manifest v3

我想将我的 Chrome 扩展从清单版本 2 迁移到版本 3,因为在不久的将来 Google 将从他们的商店中删除 MV2 扩展。现在我的扩展清单代码是这样的。

{
    "browser_action": {
        "default_icon": "img/icon_active.png",
        "default_popup": "html/popup.html",
        "default_title": "Title here"
    },
    "description": "description here",
    "icons": {
        "128": "img/icon_128.png",
        "16": "img/icon_16.png"
    },
    "manifest_version": 2,
    "name": "Title here",
    "version": "1.0.1"
}

popup.js 文件看起来像这样

$(document).on("click", ".copy-me", function(ev) {
    var $body = document.getElementsByTagName('body')[0];
    var rel = $(this).attr("rel");
    var text = $("#"+rel).text();
    var $tempInput = document.createElement("INPUT");
    $body.appendChild($tempInput);
    $tempInput.setAttribute("value",  text)
    $tempInput.select();
    document.execCommand("copy");
    $body.removeChild($tempInput);
});

Chrome 清单 v2 扩展弃用时间表

2022 年 1 月 17 日:Chrome 网上应用店不再接受新的 Manifest V2 扩展,但是,开发人员将被允许向它们推送更新。

2023 年 1 月:Manifest V2 扩展将停止工作并且不会 运行 在 Chrome,开发人员可能无法将更新推送到他们甚至有企业政策。

Offical Resource


我建议你阅读 Google Chrome Offical Migration Article

如果你不想花时间在这上面,我建议 Extension Manifest Converter 这是一个由 Google 开发的开源工具。

根据 README 文件,该工具存在局限性:

This tool aims to simplify the MV3 conversion; it does not fully automate the process. Only search and replace changes are applied to .js files.

This tool does not:

  • update any service worker code that relies on a DOM

我尝试了该工具,它给出了以下输出:

{
  "description": "description here",
  "icons": {
    "128": "img/icon_128.png",
    "16": "img/icon_16.png"
  },
  "manifest_version": 3,
  "name": "Title here",
  "version": "1.0.1",
  "action": {
    "default_icon": "img/icon_active.png",
    "default_popup": "html/popup.html",
    "default_title": "Title here"
  },
  "content_security_policy": {}
}

你的情况 manifest.json 发生了变化,但 popup.js 没有任何变化。