Addonova is a framework that allows developers to build extensions for multiple browsers. Developers can easily build, test, and manage extensions.
npx addonova init my-extension
cd my-extension
npm run release- Chrome (MV3)
- Firefox
- Microsoft Edge
- Opera
- Naver Whale
- Thunderbird
| Command | Description |
|---|---|
addonova init <name> |
Scaffold a new extension project |
addonova build [options] |
Build the current extension project |
addonova zip |
Create release zip bundles |
addonova tool |
Open the i18n tools UI in a browser |
addonova --help |
Show help |
Generated projects include these npm scripts:
npm run release
npm run release:chrome
npm run release:edge
npm run release:opera
npm run release:firefox
npm run release:thunderbird
npm run release:naver
npm run debug
npm run debug:chrome
npm run debug:edge
npm run debug:opera
npm run debug:firefox
npm run debug:thunderbird
npm run debug:naver
npm run dev
npm run zip
npm testYou can also call the CLI directly:
npx addonova build --all --release
npx addonova build --chrome --debug
npx addonova build --all --debug --watch
npx addonova zip
npx addonova tool| Option | Description |
|---|---|
--all |
Build all configured browsers |
--chrome |
Build Chrome target |
--edge |
Build Microsoft Edge target |
--firefox |
Build Firefox target |
--opera |
Build Opera target |
--naver |
Build Naver Whale target |
--thunderbird |
Build Thunderbird target |
--release |
Create release build |
--debug |
Create debug build |
--watch |
Rebuild when files change and reload opened extensions |
--open |
Open a browser with the debug extension loaded |
--test |
Build test version |
--version=x.x.x |
Append version to output zip names |
npm run devDev mode runs:
addonova build --all --debug --watchAddonova opens an isolated browser profile, loads the unpacked debug extension from .output/debug/<browser>, watches source files, rebuilds changed assets, and reloads the extension when the built files change.
my-extension/
|-- config/
|-- platform/
|-- src/
| |-- _locales/
| |-- assets/
| |-- css/
| |-- html/
| |-- js/
| `-- manifest/
|-- .output/
`-- package.jsonLocale files use the .i18n format:
@extensionName
My Extension
@extensionDescription
This is my extension description.Run the interactive message manager from a generated project:
npm run toolOr use the i18n tools UI:
npx addonova toolThis opens a full UI at http://localhost:9876 with:
- Translate tab β view all locale messages, add new messages with auto-translation, delete messages
- JSON β i18n tab β drag-and-drop a
messages.jsonfile to convert to.i18nformat
Run the test suite:
npm testCheck what will be published:
npm pack --dry-run- Addonova package: Node.js >= 20.19
- Generated extension template: Node.js >= 22 and npm >= 11
