diff --git a/apps/api/test/deploy-config.test.ts b/apps/api/test/deploy-config.test.ts index 5c5f52f..e76406c 100644 --- a/apps/api/test/deploy-config.test.ts +++ b/apps/api/test/deploy-config.test.ts @@ -48,6 +48,11 @@ describe('Dockerfile', () => { expect(read('deploy/docker/docker-bake.hcl')).toMatch(/node:22-alpine@sha256:[0-9a-f]{64}/) }) + it('в образ копируется весь dist API, а tsup не дробит бандл на чанки', () => { + expect(dockerfile).toContain('cp -r apps/api/dist /out/dist') + expect(read('apps/api/tsup.config.ts')).toMatch(/splitting:\s*false/) + }) + it('нативные модули проверяются при сборке', () => { expect(dockerfile).toContain('native modules ok') }) diff --git a/apps/api/tsup.config.ts b/apps/api/tsup.config.ts index b896c6f..5409bd1 100644 --- a/apps/api/tsup.config.ts +++ b/apps/api/tsup.config.ts @@ -21,5 +21,7 @@ export default defineConfig({ 'const __dirname = __dn(__filename);', ].join('\n'), }, + // Один файл: динамические import() (напр. CLI backup) не должны порождать чанки. + splitting: false, clean: true, }) diff --git a/deploy/docker/authportal/Dockerfile b/deploy/docker/authportal/Dockerfile index 8b99d86..37b2e27 100644 --- a/deploy/docker/authportal/Dockerfile +++ b/deploy/docker/authportal/Dockerfile @@ -31,8 +31,8 @@ RUN rm -f apps/web/src/routes/design-preview*.tsx RUN --mount=type=cache,target=/root/.local/share/pnpm/store,sharing=locked \ pnpm turbo build --filter=web --filter=@authportal/api # Рантайм-слой: бандл + статика (только brotli) + нативные модули с теми же версиями, что в lockfile. -RUN mkdir -p /out/dist \ - && cp apps/api/dist/server.js /out/dist/server.js \ +RUN mkdir -p /out \ + && cp -r apps/api/dist /out/dist \ && cp -r apps/web/dist /out/static \ && find /out/static -type f \( -name '*.js' -o -name '*.css' -o -name '*.html' -o -name '*.svg' -o -name '*.json' \) \ -exec sh -c 'brotli -f -q 11 -o "$1.br" "$1"' _ {} \; \