import fs from "fs"; import path from "path"; const CONFIG = { // Папки для сканирования includeDirs: ["app", "components", "lib", "types"], // Исключения excludeDirs: ["node_modules", ".next", ".git", "public"], // Только TypeScript файлы extensions: [".ts", ".tsx"], outputFile: "project_dump.txt", }; let outputContent = ""; function readFilesRecursively(dir) { const files = fs.readdirSync(dir); files.forEach((file) => { const filePath = path.join(dir, file); const stat = fs.statSync(filePath); if (stat.isDirectory()) { if (!CONFIG.excludeDirs.includes(file)) { readFilesRecursively(filePath); } } else { const ext = path.extname(file); if (CONFIG.extensions.includes(ext)) { const content = fs.readFileSync(filePath, "utf8"); outputContent += `\n\n--- FILE: ${filePath} ---\n\n`; outputContent += content; } } }); } console.log("🚀 Сборка TypeScript кода началась..."); // Обрабатываем основные папки CONFIG.includeDirs.forEach((dir) => { if (fs.existsSync(dir)) { readFilesRecursively(dir); } }); // Дополнительно проверяем только ts/tsx файлы в корне (если они есть) const rootFiles = fs .readdirSync(".") .filter( (f) => fs.statSync(f).isFile() && CONFIG.extensions.includes(path.extname(f)), ); rootFiles.forEach((file) => { const content = fs.readFileSync(file, "utf8"); outputContent += `\n\n--- FILE: ${file} ---\n\n`; outputContent += content; }); fs.writeFileSync(CONFIG.outputFile, outputContent); console.log(`\n✅ Готово!`); console.log(`📄 Файл: ${CONFIG.outputFile}`); console.log(`💡 Теперь в дампе только чистый код .ts и .tsx`);