chore: codify frontend local verification
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
import { readFileSync } from "node:fs";
|
||||
import { dirname, resolve } from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
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})`);
|
||||
Reference in New Issue
Block a user