UNPKG

dry-node

Version:

Initialiseur de structure Node Express typée et modulaire

58 lines (51 loc) 2.52 kB
#!/usr/bin/env node const chalk = require("chalk"); const path = require("path"); const fs = require("fs"); const fsExtra = require("fs-extra"); console.log(chalk.cyan("\n🚀 Initialisation du projet avec Dry...\n")); try { const sourceDryPath = path.join(__dirname, "dry"); const sourceInitPath = path.join(__dirname, "dry-init"); const targetDryPath = path.join(process.cwd(), "dry"); const targetInitPath = path.join(process.cwd(), "dry-init"); const packagePath = path.join(process.cwd(), "package.json"); // 1. Copier le dossier dry if (!fs.existsSync(targetDryPath)) { fsExtra.copySync(sourceDryPath, targetDryPath, { overwrite: true }); console.log(chalk.green("✅ Dossier dry copié dans le projet")); } else { console.log(chalk.yellow("ℹ️ Le dossier dry existe déjà dans le projet")); } // 2. Copier le dossier dry-init if (!fs.existsSync(targetInitPath)) { fsExtra.copySync(sourceInitPath, targetInitPath, { overwrite: true }); console.log(chalk.green("✅ Dossier dry-init copié dans le projet")); } else { console.log(chalk.yellow("ℹ️ Le dossier dry-init existe déjà dans le projet")); } // 3. Injecter le script "dry" dans package.json if (fs.existsSync(packagePath)) { const pkg = JSON.parse(fs.readFileSync(packagePath, "utf8")); pkg.scripts = pkg.scripts || {}; if (!pkg.scripts["dry"]) { pkg.scripts["dry"] = "node dry-init/dry-init-api.js"; fs.writeFileSync(packagePath, JSON.stringify(pkg, null, 2), "utf8"); console.log(chalk.green("✅ Script npm run dry injecté dans package.json")); } else { console.log(chalk.yellow("ℹ️ Script dry déjà présent dans package.json")); } } else { console.warn(chalk.red("⚠️ Aucun package.json trouvé. Impossible d’injecter le script dry.")); } // 4. Exécuter le script dry-init-api.js copié const dryInitPath = path.join(targetInitPath, "dry-init-api.js"); if (fs.existsSync(dryInitPath)) { require(dryInitPath)(); // Appel du script principal console.log(chalk.green("\n✅ Structure Dry générée avec succès !")); } else { console.error(chalk.red("❌ Fichier dry-init-api.js introuvable dans dry-init/")); } } catch (error) { console.error(chalk.red("❌ Erreur lors de l’exécution de Dry :"), error); }