dry-node
Version:
Initialiseur de structure Node Express typée et modulaire
50 lines (42 loc) • 2.19 kB
JavaScript
const chalk = require("chalk");
const path = require("path");
const fs = require("fs");
const fsExtra = require("fs-extra");
console.log(chalk.cyan("\n🚀 Initialisation du dossier applications...\n"));
try {
const sourceAppContent = path.join(__dirname, "..", "dry-init", "applications");
const targetAppRoot = path.join(process.cwd(), "dry-init", "applications");
const packagePath = path.join(process.cwd(), "package.json");
// 1. Créer le dossier dry-init/applications/ si absent
if (!fs.existsSync(targetAppRoot)) {
fs.mkdirSync(targetAppRoot, { recursive: true });
console.log(chalk.green("✅ Dossier dry-init/applications/ créé"));
} else {
console.log(chalk.yellow("ℹ️ Dossier dry-init/applications/ déjà présent"));
}
// 2. Copier le contenu de node_modules vers dry-init/applications/
if (!fs.existsSync(sourceAppContent)) {
console.error(chalk.red("❌ Le dossier source dry-init/applications est introuvable dans le module."));
process.exit(1);
}
fsExtra.copySync(sourceAppContent, targetAppRoot, { overwrite: true });
console.log(chalk.green("✅ Contenu copié dans dry-init/applications/"));
// 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 node_modules/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."));
}
console.log(chalk.green("\n✅ Initialisation terminée avec succès !"));
} catch (error) {
console.error(chalk.red("❌ Erreur Dry Init :"), error);
}