UNPKG

react-raika

Version:

react-starter

78 lines (61 loc) 2.41 kB
#!/usr/bin/env node import { execSync } from 'node:child_process'; import fs from 'node:fs'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; // Convert `__dirname` for ES Module compatibility const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const projectName = process.argv[2]; if (!projectName) { console.error('❌ Please specify the project name.'); console.error('Example: npx react-rayka my-app'); process.exit(1); } const targetDir = path.resolve(process.cwd(), projectName); if (fs.existsSync(targetDir)) { console.error('❌ Directory already exists. Please choose a different name.'); process.exit(1); } console.log('🚀 Creating your React app...'); try { // Clone the boilerplate repository execSync( `git clone https://github.com/Mobinafshari/react-boilerplate.git ${projectName}`, { stdio: 'inherit' } ); // Navigate to the project directory process.chdir(targetDir); // Remove the .git folder to reset version control fs.rmSync('.git', { recursive: true, force: true }); // Remove the README.md file const readmePath = path.join(targetDir, 'README.md'); if (fs.existsSync(readmePath)) { fs.rmSync(readmePath); } // Clear the CHANGELOG.md file fs.writeFileSync('CHANGELOG.md', ''); // Update the project name in package.json const packageJsonPath = path.join(targetDir, 'package.json'); const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')); // Update package.json fields packageJson.name = projectName; packageJson.version = '0.0.0'; // Clear version delete packageJson.description; // Clear description delete packageJson.main; // Remove main field delete packageJson.bin; // Remove bin field delete packageJson.keywords; // Save the updated package.json fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2)); // Install dependencies console.log('📦 Installing dependencies...'); execSync('npm install --legacy-peer-deps', { stdio: 'inherit' }); execSync('npm uninstall rimraf --legacy-peer-deps', { stdio: 'inherit' }); console.log('✅ React app created successfully!'); console.log('👉 Next steps:'); console.log(` 1. cd ${projectName}`); console.log(' 3. Happy coding! 🚀'); } catch (error) { console.error('❌ An error occurred:', error.message); process.exit(1); }