Files
DevRunbook release export cfd2804e27
Managed validation / full (push) Successful in 3m18s
Publish DevRunbook source
2026-09-03 04:09:17 +02:00

44 lines
1.3 KiB
JavaScript

const expectedNodeMajor = 24
const expectedPnpmVersion = '10.33.0'
const actualNodeVersion = process.versions.node
const actualNodeMajor = Number.parseInt(
actualNodeVersion.split('.')[0] ?? '',
10,
)
const packageManager = process.env.npm_config_user_agent ?? ''
const requirePackageManager = process.argv.includes('--require-package-manager')
const pnpmMatch = /(?:^|\s)pnpm\/([^\s]+)/u.exec(packageManager)
const failures = []
if (actualNodeMajor !== expectedNodeMajor) {
failures.push(
`Node.js ${expectedNodeMajor}.x is required; current runtime is ${actualNodeVersion}.`,
)
}
if (requirePackageManager && !pnpmMatch) {
failures.push(
`pnpm ${expectedPnpmVersion} is required; no pnpm user agent was detected.`,
)
} else if (
pnpmMatch?.[1] !== undefined &&
pnpmMatch[1] !== expectedPnpmVersion
) {
failures.push(
`pnpm ${expectedPnpmVersion} is required; current package manager is pnpm ${pnpmMatch[1]}.`,
)
}
if (failures.length > 0) {
console.error('DevRunbook runtime preflight failed:')
for (const failure of failures) console.error(`- ${failure}`)
console.error(
'Use the versions declared in .nvmrc, .node-version and package.json before installing or verifying.',
)
process.exit(1)
}
console.log(
`DevRunbook runtime preflight passed: Node.js ${actualNodeVersion}${pnpmMatch ? `, pnpm ${pnpmMatch[1]}` : ''}.`,
)