chartbastan/check-prerequisites.js
2026-02-01 09:31:38 +01:00

72 lines
1.9 KiB
JavaScript

#!/usr/bin/env node
/**
* Script de vérification des prérequis pour le projet chartbastan
* Node.js 20.9+ requis
*/
const { execSync } = require('child_process');
const { readFileSync } = require('fs');
const REQUIRED_NODE_VERSION = '20.9.0';
// Fonction pour comparer les versions de Node.js
function compareNodeVersions(required, current) {
const requiredParts = required.replace('v', '').split('.').map(Number);
const currentParts = current.replace('v', '').split('.').map(Number);
for (let i = 0; i < 3; i++) {
if (currentParts[i] > requiredParts[i]) return 1;
if (currentParts[i] < requiredParts[i]) return -1;
}
return 0;
}
// Fonction pour exécuter une commande et capturer la sortie
function runCommand(cmd) {
try {
return execSync(cmd, { encoding: 'utf-8' }).trim();
} catch (error) {
return null;
}
}
// Vérifications
console.log('🔍 Vérification des prérequis...\n');
// 1. Vérifier Node.js
const nodeVersion = runCommand('node --version');
if (!nodeVersion) {
console.error('❌ Node.js n\'est pas installé');
process.exit(1);
}
const versionComparison = compareNodeVersions(REQUIRED_NODE_VERSION, nodeVersion);
if (versionComparison < 0) {
console.error(`❌ Node.js version ${nodeVersion} est trop ancienne`);
console.error(` Version requise: ${REQUIRED_NODE_VERSION}+`);
process.exit(1);
}
console.log(`✅ Node.js ${nodeVersion} (requis: ${REQUIRED_NODE_VERSION}+)`);
// 2. Vérifier npm
const npmVersion = runCommand('npm --version');
if (!npmVersion) {
console.error('❌ npm n\'est pas installé');
process.exit(1);
}
console.log(`✅ npm ${npmVersion}`);
// 3. Vérifier npx
const npxVersion = runCommand('npx --version');
if (!npxVersion) {
console.error('❌ npx n\'est pas installé');
process.exit(1);
}
console.log(`✅ npx ${npxVersion}`);
console.log('\n🎉 Tous les prérequis sont satisfaits!');