After downloading/cloning the repository, run the following commands to get started:
# Install dependencies
npm install
# Build the extension for the default target browser for local development
# See table below for supported targets
npm run build
Once the extension has been built, you can load the unpacked extension (found in dist/
) in your browser.
Target | Manifest | Stage | Script | Description |
---|---|---|---|---|
chrome | 3 | build | npm run build:chrome:mv3 |
Dev build for Chrome Manifest V3 |
chrome | 2 | build | npm run build:chrome:mv2 |
Dev build for Chrome Manifest V2 |
firefox | 2 | build | npm run build:firefox:mv2 |
Dev build for Firefox Manifest V2 |
release | npm run release:all |
Official relase for all targets |
Target | Manifest | Browsers |
---|---|---|
chrome | 2, 3* | Chrome, Edge, etc. |
edgeLegacy | 2 | Legacy Edge |
firefox | 2*, 3 | Firefox |
* = default target
Stage | Output | Description |
---|---|---|
build | dist/ |
Build/compile the extension for local development |
release | release/target-manifest-version.zip |
Create an official release for a target browser |
The state files hold the details about the current build. These files are managed by bin/prebuild.mjs
.
.build.json
- Active build state file that is referenced when building/packaging/releasing
- Gets replaced by the dev or release build files outlined below
.build.dev.json
- Holds the development build details and allows the developer to omit the target from commands such as
npm run build
to rebuild the project for the target specified in the file - Overwrites
.build.json
when--release
is not passed tobin/prebuild.mjs
- Holds the development build details and allows the developer to omit the target from commands such as
.build.release.json
- Holds the release build details
- Overwrites
.build.json
when--release
is passed tobin/prebuild.mjs
config
: Overrides for the targetmanifestVersion
: Manifest version fromsrc/static/manifest.json
target
: Target browserversion
: Build version frompackage.json
For all scripts, please see package.json
.
npm run build
- npm run prebuild
- npm run clean:build
- node bin/clean.mjs --build
- node bin/prebuild.mjs --$npm_config_target
- NOTE: $npm_config_target will be blank (
--
)
- NOTE: $npm_config_target will be blank (
- npm run clean:build
- webpack --config bin/webpack.dev.js
- npm run build:static
- node bin/copyStatic.mjs
- npm run postbuild
- node bin/postbuild.mjs
- npm run prebuild
npm run build:chrome:mv2
- npm run build --target=chrome-mv2
- npm run prebuild
- npm run clean:build
- node bin/clean.mjs --build
- node bin/prebuild.mjs --$npm_config_target
- npm run clean:build
- npm run build
- webpack --config bin/webpack.dev.js
- npm run build:static
- node bin/copyStatic.mjs
- npm run postbuild
- node bin/postbuild.mjs
- npm run prebuild
- npm run build --target=chrome-mv2
npm run release:chrome:mv3
- npm run release:build --target=chrome-mv3
- npm run prerelease:build
- npm run clean:build
- node bin/clean.mjs --build
- node bin/prebuild.mjs --release --$npm_config_target
- npm run clean:build
- webpack --config bin/webpack.prod.js
- npm run build:static
- node bin/copyStatic.mjs
- postrelease:build
- node bin/postbuild.mjs
- npm run package
- node bin/packageExtension.mjs
- npm run prerelease:build
- npm run release:build --target=chrome-mv3
npm run test:addon
- npm run release:build --target=firefox-mv2
- npm run prerelease:build
- npm run clean:build
- node bin/clean.mjs --build
- node bin/prebuild.mjs --release --$npm_config_target
- npm run clean:build
- webpack --config bin/webpack.prod.js
- npm run build:static
- node bin/copyStatic.mjs
- postrelease:build
- node bin/postbuild.mjs
- npm run package
- npm run prerelease:build
- npx addons-linter ./dist
- npm run release:build --target=firefox-mv2