#!/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!');