A package namespace does not travel with the repo and gets no redirect, so the image had stayed in internal/ after the org reorganization. It now lives under build/, next to this repo. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2.5 KiB
2.5 KiB
phaser-tools
CI/CD templates for Phaser (JavaScript) game projects, in the same spirit as ebitengine-tools and love-tools.
example-makefile.make— project Makefile: local dev targets (build,web,serve,export,watch,clean).example-woodpecker.yaml— a one-line marker (platform: phaser): the full pipeline (version → build → upload → publish) is served by the update server's Woodpecker configuration extension — preview it withcurl "https://teletypegames.org/build/config?platform=phaser".builder.Dockerfile— the CI builder image:node:22-alpinewith make/zip/curl baked in.example-tasks.json— VS Code.vscode/tasks.jsonwith the common dev tasks: Serve (make serve, default build task,Cmd+Shift+B), Build Web and Make build.web/index.html— the HTML shell downloaded bymake weband packaged next tophaser.min.jsand the bundledgame.js.
There is no bundler and no node_modules: the pinned
phaser.min.js build is downloaded from the jsDelivr CDN at export
time (the same way love-tools downloads love.js), and the game
sources in src/*.js are concatenated in filename order into a
single game.js. Node is only used for a node --check syntax pass.
Usage in a game repo
- Copy
example-makefile.maketoMakefile, setPROJECTandPHASER_VERSION, and put the game sources intosrc/(they are concatenated in filename order — prefix with numbers if load order matters). - Copy
example-woodpecker.yamlto.woodpecker.yaml(a one-line marker — the pipeline itself is served by the update server; addname:when the software name differs from the repo name) and add theapplication_tokensecret in Woodpecker (an ApplicationToken with theupdate+uploadscopes, created in the admin). - Copy
example-tasks.jsonto.vscode/tasks.json.
make serve builds the web bundle and serves it on
http://localhost:8000 (Python 3's built-in HTTP server).
The served pipeline uploads $(PROJECT)-$(VERSION).html.zip via /build/upload,
then triggers
/build/publish?platform=phaser&name=$(PROJECT)&version=$(VERSION).
Builder image
docker build --platform linux/amd64 -f builder.Dockerfile \
-t git.teletypegames.org/build/phaser-builder:latest .
docker push git.teletypegames.org/build/phaser-builder:latest
Detailed documentation lives on the wiki: /development/phaser.