SponsorBlock/CONTRIBUTING.md
Michael C 84c25e3042
[docs] move building to readme, formatting tweaks
- reformatted windows build issues
- updated contributing to reflect LGPL-3.0-or-later
- replaced Invidio.us with Invidious
- replaced API docs link
- updated Invidious API link
2023-08-01 15:20:24 -04:00

2.6 KiB

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.

Building

Building locally

  1. You must have Node.js 16 or later and npm installed.
  2. Clone with submodules
git clone --recursive https://github.com/ajayyy/SponsorBlock

Or if you already cloned it, pull submodules with

git submodule update --init --recursive
  1. 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.
  1. Run npm install in the repository to install dependencies.
  2. 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.
  3. The built extension is now in dist/. You can load this folder directly in Chrome as an unpacked extension, or convert it to a zip file to load it as a temporary extension in Firefox.

Windows-specific build issues

"Cannot find module "../maze-utils"

  • src/maze-utils will not appear properly and builds will fail since it is is only rendered as a file
  • Enable "Developer Mode" in Windows (This enables symlink support)
  • Enable symlink support in git:
    git config --global core.symlinks true
    
  • Replace the text file with a symlink:
    git checkout -- src/maze-utils
    

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.

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 for more information.