UNPKG

next-dev

Version:

Tentu, berikut adalah markdown yang telah diperbaiki:

79 lines (78 loc) 3.12 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const path_1 = __importDefault(require("path")); const fs_1 = __importDefault(require("fs")); const readdirp_1 = __importDefault(require("readdirp")); require("colors"); async function getDirectoryStructure(dir) { const entries = (0, readdirp_1.default)(dir, { directoryFilter: ['!.*', '!*modules'] }); const structure = {}; for await (const entry of entries) { const relativePath = path_1.default.relative(dir, entry.fullPath); const parts = relativePath.split(path_1.default.sep); let current = structure; for (let i = 0; i < parts.length; i++) { const part = parts[i]; if (i === parts.length - 1) { if (!Array.isArray(current['files'])) { current['files'] = []; } current['files'].push(part); } else { if (!current[part]) { current[part] = {}; } current = current[part]; } } } return structure; } function generateStructureString(structure, indent = '', useColor = true) { const entries = Object.entries(structure); let result = ''; for (let i = 0; i < entries.length; i++) { const [name, value] = entries[i]; const isLast = i === entries.length - 1; if (name === 'files') { for (let j = 0; j < value.length; j++) { const file = value[j]; const isFileLast = j === value.length - 1; const text = indent + (isLast && isFileLast ? '└── ' : '├── ') + (useColor ? file.blue : file); if (useColor) { console.log(text); } result += text + '\n'; } } else { const folderName = indent + (isLast ? '└── ' : '├── ') + (useColor ? name.green : name); if (useColor) { console.log(folderName); } result += folderName + '\n'; result += generateStructureString(value, indent + (isLast ? ' ' : '│ '), useColor); } } return result; } async function genTree(argv) { const { name } = argv; const dir = path_1.default.join(process.cwd(), './'); const structure = await getDirectoryStructure(dir); const structureString = generateStructureString(structure, '', !name); if (name) { const outputDir = path_1.default.join(process.cwd(), './output_tree'); const outputFile = path_1.default.join(outputDir, `${name}.txt`); if (!fs_1.default.existsSync(outputDir)) { fs_1.default.mkdirSync(outputDir); } fs_1.default.writeFileSync(outputFile, structureString, 'utf8'); console.log(`✨✨✨ File saved at file://${outputFile} ✨✨✨`); } } exports.default = genTree;