Files
mygit/ghost/admin/lib/check-node-version.js
DuckQ1u 93d1b7c3d3
Copilot Setup Steps / copilot-setup-steps (push) Has been cancelled
first commit
2026-04-22 19:51:20 +07:00

54 lines
2.0 KiB
JavaScript

/* eslint-env node */
'use strict';
const chalk = require('chalk');
const semver = require('semver');
/**
* Check Node.js version compatibility for Ember admin build
*
* The esm module (required by dependencies) has compatibility issues with
* Node.js versions 22.10.0 to 22.17.x. We previously patched esm to work
* around this, but to avoid maintaining patches, we now check the version
* and provide clear guidance.
*/
function checkNodeVersion() {
const nodeVersion = process.version;
const parsedVersion = semver.parse(nodeVersion);
/* eslint-disable no-console */
if (!parsedVersion) {
console.warn(chalk.yellow(`Warning: Could not parse Node.js version: ${nodeVersion}`));
return;
}
// Check if version is in the problematic range: >=22.10.0 <22.18.0
const isProblematicVersion = semver.satisfies(nodeVersion, '>=22.10.0 <22.18.0');
if (isProblematicVersion) {
console.error('\n');
console.error(chalk.red('='.repeat(80)));
console.error(chalk.red('ERROR: Incompatible Node.js version detected'));
console.error(chalk.red('='.repeat(80)));
console.error();
console.error(chalk.yellow(`Current Node.js version: ${chalk.bold(nodeVersion)}`));
console.error();
console.error(chalk.white('The Ember admin build requires the esm module, which has compatibility'));
console.error(chalk.white('issues with Node.js versions 22.10.0 through 22.17.x.'));
console.error();
console.error(chalk.white('Please use one of the following Node.js versions:'));
console.error(chalk.green(' • Node.js 22.18.0 or later'));
console.error();
console.error(chalk.white('To switch Node.js versions, you can use a version manager:'));
console.error(chalk.cyan(' • nvm: nvm install 22.18.0 && nvm use 22.18.0'));
console.error();
console.error(chalk.red('='.repeat(80)));
console.error();
process.exit(1);
}
}
module.exports = checkNodeVersion;