UNPKG

cli-nexus

Version:

CLI pour générer instantanément des projets Node.js avec architecture professionnelle

94 lines (81 loc) 2.43 kB
const fs = require('fs-extra'); const path = require('path'); /** * Générateur de fichiers pour la structure de base des projets */ class FileGenerator { constructor() {} /** * Crée la structure de base du projet */ async createProjectStructure(targetDir, config) { try { // Création du répertoire racine await fs.ensureDir(targetDir); // Création des dossiers de base const baseDirs = [ 'src', 'public', 'tests', 'docs', 'logs', 'scripts' ]; for (const dir of baseDirs) { await fs.ensureDir(path.join(targetDir, dir)); } // Création des sous-dossiers publics const publicDirs = ['css', 'js', 'images']; for (const dir of publicDirs) { await fs.ensureDir(path.join(targetDir, 'public', dir)); } // Création des sous-dossiers de tests const testDirs = ['unit', 'integration', 'e2e']; for (const dir of testDirs) { await fs.ensureDir(path.join(targetDir, 'tests', dir)); } console.log('✅ Structure de base créée avec succès'); } catch (error) { throw new Error(`Erreur lors de la création de la structure: ${error.message}`); } } /** * Crée un fichier avec gestion d'erreur */ async createFile(filePath, content) { try { await fs.ensureDir(path.dirname(filePath)); await fs.writeFile(filePath, content, 'utf8'); } catch (error) { throw new Error(`Erreur lors de la création du fichier ${filePath}: ${error.message}`); } } /** * Copie un fichier template */ async copyTemplate(templatePath, targetPath) { try { await fs.ensureDir(path.dirname(targetPath)); await fs.copy(templatePath, targetPath); } catch (error) { throw new Error(`Erreur lors de la copie du template: ${error.message}`); } } /** * Vérifie si un fichier existe */ async fileExists(filePath) { return await fs.pathExists(filePath); } /** * Lit le contenu d'un fichier */ async readFile(filePath) { try { return await fs.readFile(filePath, 'utf8'); } catch (error) { throw new Error(`Erreur lors de la lecture du fichier ${filePath}: ${error.message}`); } } } module.exports = { FileGenerator };