Framework
Customization
Manifest Override

Overriding the Manifest

The Plasmo Framework extends the package.json with a manifest field to override the generated extension manifest. The primary use case is to enable features that the Plasmo framework does not yet natively support.

For instance, the Plasmo Framework might not understand that you need to have an activeTab permission. You'll need to modify your project's package.json like so:

package.json
...
"manifest": {
    "permissions": [
        "activeTab"
    ]
}

Plasmo will pass over the following fields from the package.json to the generated extension manifest:

  • packageJson.version -> manifest.version
  • packageJson.displayName -> manifest.name
  • packageJson.description -> manifest.description
  • packageJson.author -> manifest.author
  • packageJson.homepage -> manifest.homepage_url

Using environment variables

You can use environment variables inside the manifest overrides. For instance in the with-storage example (opens in a new tab):

package.json
"manifest": {
  "browser_specific_settings": {
    "gecko": {
      "id": "$FIREFOX_EXT_ID"
    }
  }
}

If the environment variable could not be found, the field will be removed completely from the manifest. This enables working with multiple browser targets by specifying target-specific environment variables.

Using locale template string

You can use locale template strings in the manifest overrides:

package.json
"manifest": {
  "name": "__MSG_extensionName__"
}