Development
Building the editor and the desktop app, the release channels, and the repository layout.
This page covers how to run scmJS from source, how it is built and released, and what to know before changing it. This is for anyone running the editor locally, building the desktop app or the container, or contributing. The user guide says what the editor does; file-formats.md and game-data.md explain the map file and the game data; plugins.md is for plugin authors. Per-subsystem notes for someone working deep in one area are in CLAUDE.md, which is written for an AI assistant but is the most detailed description of the code there is.
- Getting startedYou need Node.js 22.18 or newer (the extraction scripts import TypeScript directly and rely on Node's built-in type stripping) and git.
- Repository layoutThe repository is laid out like this:
- How the editor is put togetherThese are the conventions that everything else follows.
- TestsTests are tests/*.test.ts (and any src/**/*.test.ts), run by vitest in Node with no browser.
- Game dataThe editor draws with StarCraft's own graphics, which are not redistributable and are never committed.
- Desktop builddesktop/ is an Electron shell around the same web bundle.
- The plugin hostplugins.md is written for someone who has the npm package and none of this repository.
- Plugin typingsPlugin repositories compile against @scm-js/plugin-api, an npm package holding one generated index.d.ts bundled from src/plugins/api.ts.
- Releases.github/workflows/build.yml has three channels, and the release list only grows when a version is cut:
- The documentation sitedocs.scmjs.dev is npm run build:docs, deployed by the docs job on a tag so the site, the hosted editor and the installers are one version.
- TranslationsThe editor's own words — menus, dialogs, hints, Check Map's findings — can be shown in another language; a map's text is the map's and is never touched by this.
- Contributingdocs/chk-format.md, docs/game-data.md, docs/plugins.md and this file are the documentation site, and README.md is the repository's front page; a behaviour change that is not in them is un…
- Where things are documentedEach topic has one place it is written down: