You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
2.2 KiB
JavaScript

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}`);
}
// 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);
}
});
// Generate index for src directory that imports subdirectories
let srcContent = '\/\/ Auto Generated index.js\n';
// 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`;
}
}
});
// 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}`);