blob: 9fe8e75eb0067aadfe74f028d1ff9f607cae5ad7 [file] [log] [blame] [view]
# Build the extension
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](https://golang.org) 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.
## Build the extension as a zip file
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).
## Build the extension continously with webpack development mode
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).
## About the _Chromium MV3_ target
Chromium is working in a
[new version of the manifest.json file](https://developer.chrome.com/docs/extensions/mv3/intro/),
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.