20 lines
779 B
JavaScript
20 lines
779 B
JavaScript
import os from 'node:os'
|
|
|
|
const maxOldSpaceSizeMb = 4096
|
|
const minOldSpaceSizeMb = 2048
|
|
const reservedSystemMemoryMb = 1024
|
|
|
|
export function getBuildOldSpaceSizeMb(totalMemoryBytes = os.totalmem()) {
|
|
const totalMemoryMb = Math.floor(totalMemoryBytes / 1024 / 1024)
|
|
const hostSizedLimitMb = Math.max(minOldSpaceSizeMb, totalMemoryMb - reservedSystemMemoryMb)
|
|
|
|
return Math.min(maxOldSpaceSizeMb, hostSizedLimitMb)
|
|
}
|
|
|
|
export function appendBuildOldSpaceOption(existingNodeOptions, totalMemoryBytes = os.totalmem()) {
|
|
const requestedNodeOptions = `--max-old-space-size=${getBuildOldSpaceSizeMb(totalMemoryBytes)}`
|
|
const trimmedNodeOptions = existingNodeOptions?.trim()
|
|
|
|
return trimmedNodeOptions ? `${trimmedNodeOptions} ${requestedNodeOptions}` : requestedNodeOptions
|
|
}
|