[@ant] fix(boot): мерджить factory/cooptypes deps в boot pkg.json + failOnWarn:false
Inline workspace-deps cooptypes/factory тянет в bundle их транзитивные npm-зависимости (factory: handlebars, ajv, mongodb, nunjucks, pdf-lib, moment-timezone, uuid, json-schema, inline-css). unbuild warning'ит эти как "implicit external" и при failOnWarn:true роняет билд. Фикс: - build.config: failOnWarn:false — warnings допустимы - Dockerfile: после build мерджим factory.deps + cooptypes.deps в boot/package.json. Boot.deps побеждают в случае коллизии. Так npm install --omit=dev в runtime поставит всё что транзитивно нужно для inlined factory кода. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -41,13 +41,18 @@ RUN pnpm install --frozen-lockfile --filter "@coopenomics/boot..."
|
||||
# свой bundle с inlined workspace-deps.
|
||||
RUN pnpm --filter "@coopenomics/boot..." build
|
||||
|
||||
# Workspace-deps уже в bundle — выкидываем их из package.json,
|
||||
# чтобы npm install в runtime не падал на "workspace:*" specifier.
|
||||
# Workspace-deps inline'ятся в bundle, но их транзитивные npm-deps
|
||||
# (factory тащит handlebars/ajv/mongodb/..., cooptypes пуст) остаются
|
||||
# external — нужны в финальном node_modules. Мерджим их в boot.deps
|
||||
# и удаляем сами workspace-spec'и (npm install не понимает workspace:*).
|
||||
RUN node -e "const fs=require('fs'); \
|
||||
const p=JSON.parse(fs.readFileSync('components/boot/package.json','utf8')); \
|
||||
delete p.dependencies['cooptypes']; \
|
||||
delete p.dependencies['@coopenomics/factory']; \
|
||||
fs.writeFileSync('components/boot/package.json', JSON.stringify(p, null, 2));"
|
||||
const boot=JSON.parse(fs.readFileSync('components/boot/package.json','utf8')); \
|
||||
const factory=JSON.parse(fs.readFileSync('components/factory/package.json','utf8')); \
|
||||
const cooptypes=JSON.parse(fs.readFileSync('components/cooptypes/package.json','utf8')); \
|
||||
boot.dependencies = { ...factory.dependencies, ...cooptypes.dependencies, ...boot.dependencies }; \
|
||||
delete boot.dependencies['cooptypes']; \
|
||||
delete boot.dependencies['@coopenomics/factory']; \
|
||||
fs.writeFileSync('components/boot/package.json', JSON.stringify(boot, null, 2));"
|
||||
|
||||
# ─── Stage 2: contracts ───────────────────────────────────────────────
|
||||
FROM dicoop/contracts:${CONTRACTS_TAG} AS contracts
|
||||
|
||||
@@ -17,6 +17,12 @@ export default defineBuildConfig({
|
||||
],
|
||||
declaration: true,
|
||||
clean: true,
|
||||
// Inline workspace-deps тянет в граф транзитивные npm-deps factory'а
|
||||
// (mongodb, handlebars, ajv, ...). unbuild на них warning'ит как
|
||||
// "implicit external" — они корректно остаются external (мы их
|
||||
// мерджим в boot/package.json в Dockerfile), но warning по умолчанию
|
||||
// делает failOnWarn:true → нужно явно отключить.
|
||||
failOnWarn: false,
|
||||
rollup: {
|
||||
emitCJS: true,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user