Files
backend/scripts/verify-node-version.mjs
T

27 lines
1.0 KiB
JavaScript

import { readFileSync } from 'node:fs';
import { fileURLToPath } from 'node:url';
import { dirname, resolve } from 'node:path';
const root = resolve(dirname(fileURLToPath(import.meta.url)), '..');
const packageJson = JSON.parse(readFileSync(resolve(root, 'package.json'), 'utf8'));
const nvmVersion = readFileSync(resolve(root, '.nvmrc'), 'utf8').trim();
const expectedMajor = nvmVersion.replace(/^v/, '').split('.')[0];
const expectedEngine = `${expectedMajor}.x`;
if (packageJson.engines?.node !== expectedEngine) {
throw new Error(
`Node runtime contracts disagree: .nvmrc=${nvmVersion}, package.json engines.node=${packageJson.engines?.node ?? 'missing'}`,
);
}
const actualVersion = process.versions.node;
const actualMajor = actualVersion.split('.')[0];
if (actualMajor !== expectedMajor) {
console.error(
`Unsupported Node.js runtime: expected ${expectedEngine}, actual ${actualVersion}. Activate .nvmrc before running repository checks.`,
);
process.exit(1);
}
console.log(`Node.js runtime verified: ${actualVersion} (${expectedEngine})`);