63 lines
2.0 KiB
TypeScript
63 lines
2.0 KiB
TypeScript
import chalk from 'chalk';
|
|
|
|
const MIN_NODE_VERSION = '16.13.0';
|
|
|
|
interface Version {
|
|
major: number;
|
|
minor: number;
|
|
patch: number;
|
|
}
|
|
|
|
function parseVersion(version: string): Version {
|
|
const parts = version.replace(/^v/, '').split('.').map(Number);
|
|
return {
|
|
major: parts[0] || 0,
|
|
minor: parts[1] || 0,
|
|
patch: parts[2] || 0,
|
|
};
|
|
}
|
|
|
|
function compareVersions(version1: Version, version2: Version): number {
|
|
if (version1.major !== version2.major) {
|
|
return version1.major - version2.major;
|
|
}
|
|
if (version1.minor !== version2.minor) {
|
|
return version1.minor - version2.minor;
|
|
}
|
|
return version1.patch - version2.patch;
|
|
}
|
|
|
|
export function checkNodeVersion(): void {
|
|
const currentVersion = process.version;
|
|
const current = parseVersion(currentVersion);
|
|
const minimum = parseVersion(MIN_NODE_VERSION);
|
|
|
|
if (compareVersions(current, minimum) < 0) {
|
|
console.error(chalk.red('❌ Node.js version requirement not met'));
|
|
console.error(chalk.yellow(`Current version: ${currentVersion}`));
|
|
console.error(chalk.yellow(`Required version: >= ${MIN_NODE_VERSION}`));
|
|
console.error('');
|
|
console.error(chalk.cyan('Please upgrade Node.js to version 16.13.0 or higher.'));
|
|
console.error(chalk.cyan('Download from: https://nodejs.org/'));
|
|
console.error('');
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
export function checkNodeVersionWithMessage(): void {
|
|
const currentVersion = process.version;
|
|
const current = parseVersion(currentVersion);
|
|
const minimum = parseVersion(MIN_NODE_VERSION);
|
|
|
|
if (compareVersions(current, minimum) < 0) {
|
|
console.log(chalk.red('❌ Node.js version requirement not met'));
|
|
console.log(chalk.yellow(`Current version: ${currentVersion}`));
|
|
console.log(chalk.yellow(`Required version: >= ${MIN_NODE_VERSION}`));
|
|
console.log('');
|
|
console.log(chalk.cyan('Please upgrade Node.js to version 16.13.0 or higher.'));
|
|
console.log(chalk.cyan('Download from: https://nodejs.org/'));
|
|
console.log('');
|
|
process.exit(1);
|
|
}
|
|
}
|