mergeMd.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import fs from 'fs';
  2. import path from 'path';
  3. function mergeMdFiles(inputFolder) {
  4. try {
  5. // 验证输入文件夹是否存在
  6. if (!fs.existsSync(inputFolder)) {
  7. console.error('错误:输入的文件夹不存在');
  8. process.exit(1);
  9. }
  10. // 获取输入文件夹的名称作为输出文件名
  11. const folderName = path.basename(inputFolder);
  12. const outputFile = path.join(inputFolder, `${folderName}.md`);
  13. // 获取文件夹下所有一级MD文件
  14. const files = fs.readdirSync(inputFolder)
  15. .filter(file => file.endsWith('.md') && fs.statSync(path.join(inputFolder, file)).isFile());
  16. if (files.length === 0) {
  17. console.log('提示:文件夹下没有找到MD文件');
  18. return;
  19. }
  20. console.log(`找到 ${files.length} 个MD文件,准备合并到 ${outputFile}`);
  21. // 合并文件
  22. const outputStream = fs.createWriteStream(outputFile);
  23. files.forEach((file, index) => {
  24. const filePath = path.join(inputFolder, file);
  25. const content = fs.readFileSync(filePath, 'utf8');
  26. // 写入文件名作为标题
  27. outputStream.write(content);
  28. // 如果不是最后一个文件,添加分隔符
  29. if (index < files.length - 1) {
  30. outputStream.write('\n\n---\n\n');
  31. }
  32. });
  33. outputStream.end();
  34. console.log(`合并完成!输出文件:${outputFile}`);
  35. } catch (error) {
  36. console.error('处理过程中发生错误:', error.message);
  37. process.exit(1);
  38. }
  39. }
  40. // 获取命令行参数
  41. const args = process.argv.slice(2);
  42. if (args.length === 0) {
  43. console.error('用法:node mergeMd.js <输入文件夹路径>');
  44. process.exit(1);
  45. }
  46. const inputFolder = args[0];
  47. mergeMdFiles(inputFolder);