Skip to content

eggplants/extension-manifest-converter

 
 

Repository files navigation

emc: Extension Manifest Converter

PyPI pre-commit.ci status Test

Maintainability Test Coverage

ghcr latest ghcr size

Manifest V2 to V3 Converter

Original(~2021): GoogleChromeLabs/extension-manifest-converter

Usage

  • Convert a directory
emc dir/path/
  • Convert a manifest file
emc manifest.json
  • Convert a .zip file
emc extension.zip

All expected changes are applied to manifest.json.

Installation

This tool requires Python 3.6 or higher.

pip install git+https://github.com/eggplants/extension-manifest-converter
# or
pip install extension-manifest-converter

Features

  • Performs conversions on
    • unpacked extension directories
    • zip files containing an extension
    • manifest.json
  • General manifest.json conversions
    • Updates manifest_version field
    • Converts between host permissions declared in permissions or optional_permissions in MV2 and host_permissions in MV3
    • Converts between a content_security_policy string in MV2 and content_security_policy object withextension_pages and sandbox properties in MV3
    • Converts between background.scripts in MV2 and background service workers background.service_worker in MV3
  • Scripting API conversions
    • Converts chrome.tabs.executeScript in MV2 to chrome.scripting.executeScript in MV3. If necessary, also adds scripting to the permissions array in manifest.json.
    • Converts chrome.tabs.insertCSS in Mv2 to chrome.scripting.insertCSS in MV3. If necessary, also adds scripting to the permissions array in manifest.json.
  • Action API conversions
    • Converts calls to chrome.browserAction and chrome.pageAction in MV2 into chrome.action in MV3
    • Converts browser_action and page_action manifest entries in MV2 into action in MV3

Limitations

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

License

Apache 2.0

This is not an official Google product.