aboutsummaryrefslogtreecommitdiffhomepage
path: root/CONTRIBUTING.md
diff options
context:
space:
mode:
authorAjay <[email protected]>2023-08-01 22:45:37 -0400
committerAjay <[email protected]>2023-08-01 22:45:37 -0400
commitea77375fcc8a65b4bf1e3439852f950d95faca89 (patch)
tree7169983833503260667752ac40b16a0fbf3756e7 /CONTRIBUTING.md
parent16005e417d9bcf21afc13465fdd285d3664d8600 (diff)
parent7c5b7502644ad1dde8b48e7b81979fd57f2d32b9 (diff)
downloadSponsorBlock-ea77375fcc8a65b4bf1e3439852f950d95faca89.tar.gz
SponsorBlock-ea77375fcc8a65b4bf1e3439852f950d95faca89.zip
Merge branch 'master' of https://github.com/ajayyy/SponsorBlock
Diffstat (limited to 'CONTRIBUTING.md')
-rw-r--r--CONTRIBUTING.md32
1 files changed, 26 insertions, 6 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index eb3709f0..40f9d2db 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,8 +1,28 @@
-If you make any contributions to SponsorBlock after this file was created, you are agreeing that any code you have contributed will be licensed under LGPL-3.0.
+If you make any contributions to SponsorBlock after this file was created, you are agreeing that any code you have contributed will be licensed under LGPL-3.0 or later.
-# All Platforms
-Make sure to pull and update all submodules
-`git submodule update --init --recursive`
+# Building
+## Building locally
+0. You must have [Node.js 16 or later](https://nodejs.org/) and npm installed. Works best on Linux
+1. Clone with submodules
+ ```bash
+ git clone --recursive https://github.com/ajayyy/SponsorBlock
+ ```
+ Or if you already cloned it, pull submodules with
+ ```bash
+ git submodule update --init --recursive
+ ```
+2. Copy the file `config.json.example` to `config.json` and adjust configuration as desired.
+ - Comments are invalid in JSON, make sure they are all removed.
+ - You will need to repeat this step in the future if you get build errors related to `CompileConfig` or `property does not exist on type ConfigClass`. This can happen for example when a new category is added.
+3. Run `npm ci` in the repository to install dependencies.
+4. Run `npm run build:dev` (for Chrome) or `npm run build:dev:firefox` (for Firefox) to generate a development version of the extension with source maps.
+ - You can also run `npm run build` (for Chrome) or `npm run build:firefox` (for Firefox) to generate a production build.
+5. The built extension is now in `dist/`. You can load this folder directly in Chrome as an [unpacked extension](https://developer.chrome.com/docs/extensions/mv3/getstarted/#manifest), or convert it to a zip file to load it as a [temporary extension](https://developer.mozilla.org/docs/Tools/about:debugging#loading_a_temporary_extension) in Firefox.
+
+## Developing with a clean profile and hot reloading
+Run `npm run dev` (for Chrome) or `npm run dev:firefox` (for Firefox) to run the extension using a clean browser profile with hot reloading. This uses [`web-ext run`](https://extensionworkshop.com/documentation/develop/web-ext-command-reference/#commands).
+
+Known chromium bug: Extension is not loaded properly on first start. Visit `chrome://extensions/` and reload the extension.
+
+For Firefox for Android, use `npm run dev:firefox-android -- --adb-device <ip-address of the device>`. See the [Firefox documentation](https://extensionworkshop.com/documentation/develop/developing-extensions-for-firefox-for-android/#debug-your-extension) for more information.
-"? property does not exist on type ConfigClass"
-> Make sure to copy `config.json.example` to `config.json` and remove comments \ No newline at end of file