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 announced a while back a new version of the manifest.json file, which also introduces some changes to the extension APIs. The Chromium MV3 target builds the extension using this new version.
MV2 will phase out in January 2023, so starting with version v2.1.2, the CWS beta channel will receive the MV3 variant of the extension to begin testing it publicly. For now, the stable channel will continue to receive the MV2 variant of the extension.