diff --git a/tools/build/README.md b/tools/build/README.md index dec6568..41b8e70 100644 --- a/tools/build/README.md +++ b/tools/build/README.md @@ -176,9 +176,32 @@ If frozen install fails, update dependencies intentionally in source control and - `PACKAGE_VERSION=0.1.6` - `BUILD_ID=prod-$(date -u +%Y%m%dT%H%M%SZ)` - `BUN_FLAVOR=auto|x64|x64-baseline` +- `FRONTEND_NODE_OLD_SPACE_SIZE=2048` (default memory limit for frontend build step) - `TOOLCHAIN_DIR=/custom/path/.toolchain` - `VERIFY_TOOLCHAIN_CHECKSUMS=true` +## Frontend memory policy + +Builder applies a safe default Node.js heap limit for frontend build inside [`bundle_ui()`](lib/package.sh): + +```bash +--max-old-space-size=2048 +``` + +Override options: + +- adjust default value for this policy: + +```bash +FRONTEND_NODE_OLD_SPACE_SIZE=3072 ./tools/build/build.sh +``` + +- or provide full custom Node options (if `--max-old-space-size` is already set there, builder will not append another one): + +```bash +NODE_OPTIONS="--max-old-space-size=3072" ./tools/build/build.sh +``` + ## Диагностика Проверить AVX2: diff --git a/tools/build/lib/package.sh b/tools/build/lib/package.sh index 95022c9..09e4356 100644 --- a/tools/build/lib/package.sh +++ b/tools/build/lib/package.sh @@ -47,6 +47,17 @@ bundle_ui() { ( cd "$ui_src/frontend" + + local frontend_node_old_space_size="${FRONTEND_NODE_OLD_SPACE_SIZE:-2048}" + local frontend_node_options="${NODE_OPTIONS:-}" + + if [[ "$frontend_node_options" != *"--max-old-space-size="* ]]; then + frontend_node_options="${frontend_node_options:+$frontend_node_options }--max-old-space-size=${frontend_node_old_space_size}" + fi + + export NODE_OPTIONS="$frontend_node_options" + log_info "Frontend Node.js options: $NODE_OPTIONS" + "$PNPM_BIN" install --frozen-lockfile "$PNPM_BIN" run build:prod )