dry-node
Version:
Initialiseur de structure Node Express typée et modulaire
58 lines (51 loc) • 2.52 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 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);
}