dry-react
Version:
Initialiseur de structure React Native typée et modulaire
91 lines (83 loc) • 2.58 kB
JavaScript
const fs = require('fs');
const path = require('path');
// 🔍 Trouver la racine du projet utilisateur (là où package.json existe)
function findProjectRoot(startPath) {
let current = startPath;
while (current !== path.parse(current).root) {
if (fs.existsSync(path.join(current, 'package.json'))) {
return current;
}
current = path.dirname(current);
}
return startPath;
}
const root = findProjectRoot(process.cwd()); // ✅ racine réelle du projet
// === Structure du projet ===
const structure = {
src: {
assets: {
images: {},
videos: {},
sounds: {},
styles: {},
fonts: {},
icons: {},
},
core: {
services: {},
guards: {},
interceptors: {},
providers: {},
},
configs: {},
contexts: {},
components: {},
hooks: {},
models: {
interfaces: {},
types: {},
enums: {},
classes: {},
},
navigations: {},
resources: {},
screens: {
alone: {},
menu: {},
auth: {},
},
store: {},
utils: {},
},
};
// === Fonction récursive pour créer les dossiers ===
function createFolders(basePath, tree) {
for (const key in tree) {
const dirPath = path.join(basePath, key);
if (!fs.existsSync(dirPath)) {
fs.mkdirSync(dirPath);
console.log(`📁 Dossier créé : ${path.relative(root, dirPath)}`);
}
createFolders(dirPath, tree[key]);
}
}
// === Point d’entrée ===
module.exports = function () {
console.log('🚀 Création de la structure React Native à la racine du projet...\n');
// Étape 1 : créer la structure globale
createFolders(root, structure);
// Étapes suivantes : génération des modules
require('./update-babel')();
require('./install-package-init')();
require('./apply-alias')();
require('./generate-store')();
require('./generate-model')();
require('./generate-env-config')();
require('./generate-layout-ui')();
require('./generate-toast-config')();
require('./generate-style');
require('./generate-service')();
require('./generate-interceptor')();
require('./generate-user-hook')();
console.log('\n✅ Structure complète générée avec succès !');
};