Files
orca/config/scripts/run-vite-web-build.mjs
T
OrcaWinandOrcaWin b252aef0cf perf(build): cap Rolldown threads on large hosts; build pairing web client in the background (#33828)
Rolldown defaults to 1.5x physical cores Tokio workers plus a Rayon pool per
logical CPU (24+24 here). Capping both at 8 on >8-core hosts cuts electron-vite
build CPU 24% with byte-identical output. pnpm dev no longer blocks on a stale
pairing web build; it stages into out/.web-next and swaps on success.

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-10-26 00:51:28 -07:00

34 lines
996 B
JavaScript

import { spawn } from 'node:child_process'
import { createRequire } from 'node:module'
import path from 'node:path'
import { appendBuildOldSpaceOption } from './node-old-space-limit.mjs'
import { withRolldownThreadLimit } from './rolldown-thread-limit.mjs'
const require = createRequire(import.meta.url)
const vitePackageJson = require.resolve('vite/package.json')
const viteCli = path.join(path.dirname(vitePackageJson), 'bin', 'vite.js')
// Raise heap for Pi/release runners while reserving memory for OS/bundler on smaller hosts.
const nodeOptions = appendBuildOldSpaceOption(process.env.NODE_OPTIONS)
const child = spawn(
process.execPath,
[viteCli, 'build', '--config', 'vite.web.config.ts', ...process.argv.slice(2)],
{
stdio: 'inherit',
env: {
...withRolldownThreadLimit(process.env),
NODE_OPTIONS: nodeOptions
}
}
)
child.on('exit', (code, signal) => {
if (signal) {
process.kill(process.pid, signal)
return
}
process.exit(code ?? 1)
})