UNPKG

cli-nexus

Version:

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

46 lines (40 loc) 2.16 kB
const fs = require('fs-extra'); const path = require('path'); class AngularGenerator { async generate(targetDir, config) { // Squelette minimal (l'intégration du CLI Angular peut être ajoutée plus tard) const arch = (config.frontendArchitecture || 'default').toLowerCase(); await fs.ensureDir(path.join(targetDir, 'src')); const pkg = { name: `${config.projectName}-angular`, private: true, version: '0.1.0', scripts: { start: 'echo "Configurez Angular CLI (ng) pour démarrer"' }, dependencies: {}, devDependencies: {} }; await fs.writeFile(path.join(targetDir, 'package.json'), JSON.stringify(pkg, null, 2), 'utf8'); await fs.writeFile(path.join(targetDir, 'README.md'), `# Frontend Angular\n\nCe squelette minimal nécessite l'installation et l'initialisation avec Angular CLI.\n`, 'utf8'); await fs.writeFile(path.join(targetDir, 'src', 'index.html'), `<!doctype html>\n<html><head><meta charset=\"utf-8\"><title>${config.projectName} - Angular</title></head><body><app-root>Angular app</app-root></body></html>`, 'utf8'); const gitignore = `node_modules\n.dist\n.DS_Store\nThumbs.db\n`; await fs.writeFile(path.join(targetDir, '.gitignore'), gitignore, 'utf8'); // Optionnel: structure selon "arch" if (arch === 'mvc') { await fs.ensureDir(path.join(targetDir, 'src', 'controllers')); await fs.ensureDir(path.join(targetDir, 'src', 'views')); await fs.ensureDir(path.join(targetDir, 'src', 'models')); } else if (arch === 'clean') { await fs.ensureDir(path.join(targetDir, 'src', 'domain')); await fs.ensureDir(path.join(targetDir, 'src', 'application')); await fs.ensureDir(path.join(targetDir, 'src', 'ui')); } else if (arch === 'hexa') { await fs.ensureDir(path.join(targetDir, 'src', 'domain')); await fs.ensureDir(path.join(targetDir, 'src', 'application')); await fs.ensureDir(path.join(targetDir, 'src', 'adapters')); await fs.ensureDir(path.join(targetDir, 'src', 'ports')); } } } module.exports = { AngularGenerator };