UNPKG

zura-stack-native

Version:

A comprehensive React Native CLI project generator with production-ready setup

71 lines (59 loc) • 2.25 kB
const { execSync } = require('child_process'); const chalk = require('chalk'); const which = require('which'); const semver = require('semver'); async function checkRequirements(infoOnly = false) { const requirements = [ { name: 'Node.js', minVersion: '16.0.0', command: 'node --version' }, { name: 'npm', minVersion: '8.0.0', command: 'npm --version' }, { name: 'React Native CLI', minVersion: '19.0.0', command: 'npx @react-native-community/cli --version' } ]; const results = []; let allPassed = true; for (const req of requirements) { try { const version = execSync(req.command, { encoding: 'utf8' }).trim(); const cleanVersion = version.replace(/^v/, ''); const isValid = semver.gte(cleanVersion, req.minVersion); results.push({ name: req.name, version: cleanVersion, required: req.minVersion, valid: isValid }); if (!isValid) { allPassed = false; } } catch (error) { results.push({ name: req.name, version: 'Not installed', required: req.minVersion, valid: false }); allPassed = false; } } // Display results console.log(chalk.blue('\nšŸ“‹ System Requirements Check:\n')); results.forEach(result => { const status = result.valid ? chalk.green('āœ…') : chalk.red('āŒ'); const versionText = result.valid ? chalk.green(result.version) : chalk.red(result.version); console.log(`${status} ${result.name}: ${versionText} (required: ${result.required})`); }); if (!infoOnly && !allPassed) { console.log(chalk.red('\nāŒ Some requirements are not met. Please install/update the missing dependencies.')); console.log(chalk.yellow('\nšŸ’” Installation commands:')); console.log(chalk.gray('• Node.js: https://nodejs.org/')); console.log(chalk.gray('• npm: comes with Node.js')); console.log(chalk.gray('• React Native CLI: npm install -g @react-native-community/cli@19.0.0')); throw new Error('System requirements not met'); } if (infoOnly) { console.log(chalk.green('\nāœ… All requirements are met!')); } return { allPassed, results }; } module.exports = { checkRequirements };