Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/eggplants/extension-manifest-converter

Chrome Extension Manifest V2 to V3 Converter
https://github.com/eggplants/extension-manifest-converter

chrome-extension cli converter manifest-v2 manifest-v3 migration-tool mv2-to-mv3

Last synced: 3 months ago
JSON representation

Chrome Extension Manifest V2 to V3 Converter

Awesome Lists containing this project

README

        

# `emc`: Extension Manifest Converter

[![PyPI](
https://img.shields.io/pypi/v/extension-manifest-converter?color=blue
)](
https://pypi.org/project/extension-manifest-converter
) [![pre-commit.ci status](
https://results.pre-commit.ci/badge/github/eggplants/extension-manifest-converter/main.svg
)](
https://results.pre-commit.ci/latest/github/eggplants/extension-manifest-converter/main
) [![Test](
https://github.com/eggplants/extension-manifest-converter/actions/workflows/test.yml/badge.svg
)](
https://github.com/eggplants/extension-manifest-converter/actions/workflows/test.yml
)

[![Maintainability](
https://api.codeclimate.com/v1/badges/09b8d7fd82410ad92238/maintainability
)](
https://codeclimate.com/github/eggplants/extension-manifest-converter/maintainability
) [![Test Coverage](
https://api.codeclimate.com/v1/badges/09b8d7fd82410ad92238/test_coverage
)](
https://codeclimate.com/github/eggplants/extension-manifest-converter/test_coverage
)

[![ghcr latest](
https://ghcr-badge.herokuapp.com/eggplants/extension-manifest-converter/latest_tag?trim=major&label=latest
) ![ghcr size](
https://ghcr-badge.herokuapp.com/eggplants/extension-manifest-converter/size)
](
https://github.com/eggplants/extension-manifest-converter/pkgs/container/extension-manifest-converter
)

Manifest [V2](https://developer.chrome.com/docs/extensions/mv2/) to [V3](https://developer.chrome.com/docs/extensions/mv3/intro/) Converter

_Original(~2021): [GoogleChromeLabs/extension-manifest-converter](https://github.com/GoogleChromeLabs/extension-manifest-converter)_

## Usage

- Convert a directory

```bash
emc dir/path/
```

- Convert a manifest file

```bash
emc manifest.json
```

- Convert a .zip file

```bash
emc extension.zip
```

All expected changes are applied to `manifest.json`.

## Installation

This tool requires Python 3.6 or higher.

```bash
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
with`extension_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](https://github.com/GoogleChromeLabs/extension-manifest-converter/blob/master/LICENSE)

This is not an official Google product.