@@ -16,17 +16,23 @@ WORKDIR /app
1616
1717COPY pnpm-lock.yaml pnpm-workspace.yaml package.json .npmrc ./
1818COPY library/package.json ./library/
19- # The library now depends on the @tumaet/ui workspace package; without it the
20- # pnpm install can't link it and `pnpm --filter @tumaet/ui run build:*` no-ops,
21- # so the library's tsc -b fails to resolve @tumaet/ui/components/*.
19+ # The library depends on the @tumaet/ui workspace package; without its manifest
20+ # pnpm can't link it and `pnpm --filter @tumaet/ui run build:*` no-ops, so the
21+ # library's tsc -b fails to resolve @tumaet/ui/components/*.
2222COPY packages/ui/package.json ./packages/ui/
2323COPY standalone/webapp/package.json ./standalone/webapp/
24- COPY standalone/server/package.json ./standalone/server/
25- COPY vscode-extension/package.json ./vscode-extension/
26- COPY vscode-extension/webview/package.json ./vscode-extension/webview/
2724
25+ # `<pkg>...` selects the webapp plus the workspaces it depends on, so the only
26+ # manifests this stage needs are the ones copied above.
27+ #
28+ # `--ignore-scripts` keeps the stage hermetic. Every dependency lifecycle script
29+ # reachable from here either downloads a binary over the network (sharp, pulled
30+ # in by @capacitor/assets for mobile icon generation) or compiles C++ against a
31+ # toolchain this slim image deliberately omits (cpu-features). Nothing the
32+ # webapp bundle is built from needs either, and a script that reaches the
33+ # network turns an image build into a coin flip on GitHub Releases being up.
2834RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
29- pnpm install --frozen-lockfile
35+ pnpm install --frozen-lockfile --ignore-scripts --filter @tumaet/webapp...
3036
3137COPY library ./library
3238COPY packages/ui ./packages/ui
0 commit comments