UNPKG

next-dev

Version:

Tentu, berikut adalah markdown yang telah diperbaiki:

57 lines (56 loc) 3.37 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const readdirp_1 = __importDefault(require("readdirp")); const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const lodash_1 = __importDefault(require("lodash")); const prettier_1 = __importDefault(require("prettier")); async function genExport(argv) { const dir = argv.dir; const listFilter = argv.listFilter || ['*.ts', '*.tsx']; const log = argv.log || false; log && console.log(`Generating index.ts in ${dir}`); log && console.log(`listFilter:`, listFilter); // Initialize an array to hold export statements const exportStatements = []; const exportDefaultStatement = []; const exportFileName = []; const fileNameSet = new Set(); // Read files in the directory excluding 'index.*' for await (const entry of (0, readdirp_1.default)(path_1.default.join(process.cwd(), dir), { fileFilter: [...listFilter, '!index.*'] })) { const relativePath = path_1.default.relative(path_1.default.join(process.cwd(), dir), entry.fullPath); const importPath = `./${relativePath.replace(/\\/g, '/').replace(/\.[jt]sx?$/, '')}`; let fileName = lodash_1.default.camelCase(path_1.default.basename(relativePath, path_1.default.extname(relativePath))); // Check for duplicate file name if (fileNameSet.has(fileName)) { // Add parent directory name to the file name to make it unique const parentDirName = lodash_1.default.camelCase(path_1.default.basename(path_1.default.dirname(relativePath))); fileName = `${fileName}${lodash_1.default.upperFirst(parentDirName)}`; } fileNameSet.add(fileName); // Generate export statement and add it to the array exportStatements.push(`export { default as ${fileName} } from '${importPath}';`); exportDefaultStatement.push(`import { default as ${fileName} } from '${importPath}';`); exportFileName.push(fileName); log && console.log(` - ${fileName}`); } if (argv.c) { // Combine all export statements into a single string const indexContent = exportDefaultStatement.join('\n'); // Write the export statements to 'index.ts' in the given directory const fileName = lodash_1.default.camelCase(path_1.default.basename(dir)); const textString = `${indexContent}\nconst ${fileName} = {\n${exportFileName.join(',\n')}\n};\nexport { \n${exportFileName.join(',\n')}\n } ;\nexport default ${fileName};`; await fs_1.default.promises.writeFile(path_1.default.join(process.cwd(), dir, 'index.ts'), await prettier_1.default.format(textString, { parser: "typescript" }), 'utf8'); console.log(`✨✨✨ index.ts generated in ${dir} ✨✨✨`); return; } // Combine all export statements into a single string const indexContent = exportStatements.join('\n'); // Write the export statements to 'index.ts' in the given directory await fs_1.default.promises.writeFile(path_1.default.join(process.cwd(), dir, 'index.ts'), indexContent, 'utf8'); console.log(`✨✨✨ index.ts generated in ${dir} ✨✨✨`); } exports.default = genExport;