manifest.json
=============

**备注：** 本文描述的是适用于 web 扩展技术的 manifest.json。若你正在寻找适用于 PWA 的 manifest.json 的有关信息，请参考这篇文章：Web App 清单。

`manifest.json` 是每个使用 WebExtension API 的扩展必须包含的唯一文件。

通过使用 `manifest.json`，你可以指定扩展的基本元数据，例如名称和版本，还可以指定扩展各个方面的功能（例如后台脚本、内容脚本和某些浏览器行为）。

它是一个允许使用“`//`”撰写单行注释的、特殊的 JSON 文件。

manifest.json 键列表
-----------------

这些是 `manifest.json` 键；除非另有说明，否则这些键在 Manifest V2 及以上版本中可用：

* action (en-US)（Manifest V3 及以上）
* author
* background
* browser\_action（仅 Manifest V2）
* browser\_specific\_settings
* chrome\_settings\_overrides (en-US)
* chrome\_url\_overrides (en-US)
* commands (en-US)
* content\_scripts
* content\_security\_policy (en-US)
* declarative\_net\_request (en-US)
* default\_locale
* description
* developer
* devtools\_page (en-US)
* dictionaries (en-US)
* externally\_connectable (en-US)
* homepage\_url
* host\_permissions (en-US)（Manifest V3 及以上）
* icons (en-US)
* incognito (en-US)
* manifest\_version
* name
* offline\_enabled (en-US)
* omnibox (en-US)
* optional\_permissions (en-US)
* options\_page (en-US)
* options\_ui (en-US)
* page\_action (en-US)（仅 Chrome 中的 Manifest V2）
* permissions
* protocol\_handlers (en-US)
* short\_name
* sidebar\_action (en-US)
* storage (en-US)
* theme (en-US)
* theme\_experiment (en-US)
* user\_scripts (en-US)（仅 Manifest V2）
* version
* version\_name (en-US)
* web\_accessible\_resources
### 关于 manifest.json 键的注意事项

* `"manifest_version"`、`"version"` 和 `"name"` 是唯一的强制必填键。
* 如果“`\_locales`”目录存在，`"default_locale"` 也必须相应存在，否则不应存在。
* Google Chrome 不支持 `"browser_specific_settings"`。
### 在运行时访问 manifest.json 键

你可以在拓展的 JavaScript 代码中通过 `runtime.getManifest()` 函数访问拓展的清单数据：


```js
browser.runtime.getManifest().version;
```

示例
--

下面的代码块显示了一些常用清单键的基本语法。

**备注：** 本示例并非用于直接复制粘贴。根据你要开发的扩展选择相应的键。

有关完整的扩展示例，请参阅扩展示例。


```json
{
  "browser\_specific\_settings": {
    "gecko": {
      "id": "addon@example.com",
      "strict\_min\_version": "42.0"
    }
  },

  "background": {
    "scripts": ["jquery.js", "my-background.js"]
  },

  "browser\_action": {
    "default\_icon": {
      "19": "button/geo-19.png",
      "38": "button/geo-38.png"
    },
    "default\_title": "Whereami?",
    "default\_popup": "popup/geo.html"
  },

  "commands": {
    "toggle-feature": {
      "suggested\_key": {
        "default": "Ctrl+Shift+Y",
        "linux": "Ctrl+Shift+U"
      },
      "description": "Send a 'toggle-feature' event"
    }
  },

  "content\_security\_policy": "script-src 'self' https://example.com; object-src 'self'",

  "content\_scripts": [
    {
      "exclude\_matches": ["\*://developer.mozilla.org/\*"],
      "matches": ["\*://\*.mozilla.org/\*"],
      "js": ["borderify.js"]
    }
  ],

  "default\_locale": "en",

  "description": "…",

  "icons": {
    "48": "icon.png",
    "96": "icon@2x.png"
  },

  "manifest\_version": 2,

  "name": "…",

  "page\_action": {
    "default\_icon": {
      "19": "button/geo-19.png",
      "38": "button/geo-38.png"
    },
    "default\_title": "Whereami?",
    "default\_popup": "popup/geo.html"
  },

  "permissions": ["webNavigation"],

  "version": "0.1",

  "user\_scripts": {
    "api\_script": "apiscript.js"
  },

  "web\_accessible\_resources": ["images/my-image.png"]
}
```

浏览器兼容性
------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

有关所有清单键及其子键的完整概览，请参阅完整的 `manifest.json` 浏览器兼容性表。

参见
--

`permissions` (en-US) JavaScript API