A zip file with the contents of the extension, which can be uploaded to the Chrome Web Store and addons.mozilla.org, can be created by following these instructions. (make sure to install Go before building the extension, as it is needed during the build).
The last section explains how to build the extension automatically when you change the source code.
Run make release
to build the extension for all the available channels and browsers. You can also run make {target}
where {target}
is one of the following: release_chromium_stable
, release_chromium_beta
, release_gecko_stable
.
Run make clean_releases
to clean all the release files (this removes the out
folder, which is where the release files are saved).
Take a look at Makefile
, you'll find other targets for make which do other interesting things (like clean
, for instance).
If you're developing the extension, you might want to load it into your browser without having to constantly build it manually after each change. In order to do that, you can run make serve_chromium
, make serve_chromium_mv3
or make serve_gecko
depending on the type of continuous build you want.
This will run webpack with watch mode and continuously serve a fresh version of the compiled extension at dist/{BROWSER}
, where {BROWSER}
depends on the target you selected for make. You can load this folder in Chrome by going to chrome://extensions
and selecting "Load unpacked".
Keep in mind that while the extension is continuously built, it is not automatically being loaded into Chrome. You'll have to reload the extension manually in Chrome (but at least you won't have to both build and reload it).
Chromium is working in a new version of the manifest.json file, which also introduces some changes to the extension APIs. Eventually, all Chrome extensions will be required to have migrated to Manifest V3 (MV3), so in order to anticipate this change, a new experimental Chromium MV3 target has been added.
This target is experimental in the sense that it isn't actually used when building the extension ZIPs which are uploaded to the Chrome Web Store (MV2 is still used), and because these builds aren't currently being exhaustively tested.