|
|
|
|
const fs = require('fs');
|
|
|
|
|
const path = require('path');
|
|
|
|
|
|
|
|
|
|
function generateIndexFile(dirPath) {
|
|
|
|
|
const files = fs.readdirSync(dirPath).filter(file =>
|
|
|
|
|
file.endsWith('.js') && file !== 'index.js'
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (files.length === 0) return;
|
|
|
|
|
|
|
|
|
|
let content = '\/\/ Auto Generated index.js\n';
|
|
|
|
|
|
|
|
|
|
// Import each file and export it as a namespace
|
|
|
|
|
files.forEach(file => {
|
|
|
|
|
const moduleName = path.basename(file, '.js');
|
|
|
|
|
content += `export * as ${moduleName} from './${file}';\n`;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const indexPath = path.join(dirPath, 'index.js');
|
|
|
|
|
fs.writeFileSync(indexPath, content);
|
|
|
|
|
console.log(`Generated index.js for: ${dirPath}`);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 1. Generate index for each subdirectory in src
|
|
|
|
|
const srcDir = path.join(__dirname, '..', 'src');
|
|
|
|
|
const srcItems = fs.readdirSync(srcDir);
|
|
|
|
|
|
|
|
|
|
srcItems.forEach(item => {
|
|
|
|
|
const itemPath = path.join(srcDir, item);
|
|
|
|
|
if (fs.statSync(itemPath).isDirectory()) {
|
|
|
|
|
generateIndexFile(itemPath);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 2 Generate index for src directory that imports subdirectories
|
|
|
|
|
let srcContent = '\/\/ Auto Generated index.js\n';
|
|
|
|
|
|
|
|
|
|
// 2.1 Add imports for each subdirectory
|
|
|
|
|
srcItems.forEach(item => {
|
|
|
|
|
const itemPath = path.join(srcDir, item);
|
|
|
|
|
if (fs.statSync(itemPath).isDirectory() ) { // && item !== 'utils'
|
|
|
|
|
// Check if the subdirectory has JS files to determine if we should export it
|
|
|
|
|
const subDirFiles = fs.readdirSync(itemPath).filter(file =>
|
|
|
|
|
file.endsWith('.js') && file !== 'index.js'
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (subDirFiles.length > 0) {
|
|
|
|
|
srcContent += `export * as ${item} from './${item}/index.js';\n`;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 2.2 Add imports for files in the utils directory
|
|
|
|
|
const utilsDir = path.join(srcDir, 'utils');
|
|
|
|
|
if (fs.existsSync(utilsDir)) {
|
|
|
|
|
generateIndexFile(utilsDir);
|
|
|
|
|
|
|
|
|
|
// Export individual files from utils
|
|
|
|
|
const utilsFiles = fs.readdirSync(utilsDir).filter(file =>
|
|
|
|
|
file.endsWith('.js') && file !== 'index.js'
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
utilsFiles.forEach(file => {
|
|
|
|
|
const moduleName = path.basename(file, '.js');
|
|
|
|
|
srcContent += `export * as ${moduleName} from './utils/${file}';\n`;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
// Write the src index.js file
|
|
|
|
|
const srcIndexPath = path.join(srcDir, 'index.js');
|
|
|
|
|
fs.writeFileSync(srcIndexPath, srcContent);
|
|
|
|
|
console.log(`Generated index.js for: ${srcDir}`);
|