npm silently skips devDependencies in some Alpine+npm combinations,
causing tsc to be missing even after npm install. Moving typescript
to regular dependencies guarantees it is always installed and its
.bin symlink is created regardless of NODE_ENV.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The server has an Apple npm proxy that silently drops devDependencies.
Copying the same .npmrc fix used by the frontend (registry=registry.npmjs.org)
resolves the issue.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The cached npm ci layer predates the ENV PATH instruction, so tsc was
never on PATH when the build ran. Moving ENV PATH earlier changes the
cache key and forces a fresh install.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
node:20-slim picks up the Apple npm proxy which blocks installs.
node:20-alpine does not. Also add PATH for node_modules/.bin so tsc
is found, and remove committed dist/ since the build now works properly.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Server npm proxy silently drops devDependencies, making TypeScript
unavailable in Docker. Solution: compile locally and commit dist/.
Dockerfile now only needs prod deps + Playwright, both of which
install cleanly via the public registry.
Also fix TS2688/TS2304 errors: add DOM to tsconfig lib and cast
querySelectorAll results to Element inside $$eval callbacks.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
--ignore-scripts prevented @types/* packages from being installed,
causing tsc to fail on missing type definitions.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Install tsc globally so it's available on PATH regardless of
devDependency resolution issues. Use --ignore-scripts and explicit
registry to work around Apple npm proxy interference.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The server's npm proxy intercepts and silently fails devDependency
installs inside Docker. Bundle node_modules directly from the local
checkout where they are known-good.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
npm.apple.com causes silent install failures for devDependencies inside
the Docker build context. Explicitly use registry.npmjs.org for the
builder stage.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
node:20-slim defaults NODE_ENV=production which causes npm to skip dev
deps (typescript, ts-node), preventing tsc from being found.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Avoids stale Docker layer cache issue where tsc was not found because
an old npm ci layer (without dev deps) was cached on the build host.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>