| # 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_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). |