Lint the frontend with eslint in its own Docker stage (closes #47)
check / check (push) Successful in 3m48s

script/lint ran prettier --check, the same check script/fmt-check
runs, so the JavaScript had no linter. eslint now runs with its
recommended rules, set in eslint.config.js, in a new frontend-lint
stage of Dockerfile built from the pinned node image and the lockfile.
The frontend stage copies a file from it, as the builder stage does
from the Go lint stage, so the image cannot build unless eslint passed.
script/lint builds both lint stages with --no-cache and runs no linter
on the host; script/fmt-check keeps prettier on the host, and
script/frontend-check drops its lint step. The viewport harness fixes
the two kinds of finding eslint made. bootstrap wants node 22.13.0, as
eslint 10 does. Also covers item 2 of
#28.

Model: opus-5-5
This commit was merged in pull request #97.
This commit is contained in:
2026-10-04 01:58:07 +02:00
parent 2f0489e3a4
commit 924527b744
12 changed files with 637 additions and 39 deletions
+5 -2
View File
@@ -1,12 +1,15 @@
#!/bin/sh
# script/frontend-lint: run the frontend linter (prettier in check mode).
# script/frontend-lint: run eslint over the frontend. This runs inside
# the frontend-lint stage of Dockerfile, the digest-pinned node image
# with the packages from yarn.lock. From a checkout, run `make lint`,
# which builds that stage.
set -eu
ROOT="$(cd "$(dirname "$0")/.." && pwd -P)"
main() {
cd "$ROOT"
yarn prettier --check .
yarn eslint .
}
main "$@"