chore(node): build for the runtime the image carries

`engines`, `@types/node` and the three esbuild targets said node20 while both
stages of the image have been node:24-alpine for a while — and since
24.10.2026 the development machines run 24 too. So the bundles are built for
exactly the runtime that carries them instead of for a version nobody runs
any more.

`npm run check`: 110 files, 1825 tests, green on node 24.22.1.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-10-24 15:49:02 +00:00
co-authored by Claude Opus 5
parent b4e0046a09
commit fd9bd1e421
6 changed files with 19 additions and 19 deletions
+5 -5
View File
@@ -11,11 +11,11 @@
# and a .gz beside its files. The second stage takes only these files, so
# the image holds no node_modules, no sources and no compiler.
#
# Node 24 (active LTS), not the 20 of the development machines: 20 has had
# no security fixes since April 2026, and a service facing the browsers of a
# whole school should not run on it. The bundles are built for node20 and
# run unchanged on 24; the image's run is checked before each release (see
# the README).
# Node 24 (active LTS) — and since 24.10.2026 the same major as the
# development machines, so the bundles are built for exactly the runtime that
# carries them. 20 has had no security fixes since April 2026, and a service
# facing the browsers of a whole school should not run on it. The image's run
# is checked before each release (see the README).
FROM node:24-alpine AS build
WORKDIR /src