update.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. const fs = require('fs');
  2. const path = require('path');
  3. // 1. 读取 package.json
  4. const packageJson = require('./package.json');
  5. const dependencies = packageJson.dependencies || {};
  6. const devDependencies = packageJson.devDependencies || {};
  7. // 2. 生成 Markdown 表格内容的函数
  8. function generateTable(deps, title) {
  9. if (Object.keys(deps).length === 0) return '';
  10. let content = `\n### ${title}\n\n`;
  11. content += '| Package | Version |\n';
  12. content += '| :--- | :--- |\n';
  13. for (const [name, version] of Object.entries(deps)) {
  14. content += `| [${name}](https://www.npmjs.com/package/${name}) | \`${version}\` |\n`;
  15. }
  16. return content;
  17. }
  18. // 3. 组合内容
  19. const depContent = generateTable(dependencies, '核心依赖 (Dependencies)') +
  20. generateTable(devDependencies, '开发依赖 (DevDependencies)');
  21. // 4. 读取 README.md
  22. const readmePath = path.join(__dirname, 'README.md');
  23. let readmeContent = fs.readFileSync(readmePath, 'utf8');
  24. // 5. 替换标记之间的内容
  25. const startMarker = '';
  26. const endMarker = '';
  27. const regex = new RegExp(`${startMarker}[\\s\\S]*?${endMarker}`);
  28. const newContent = `${startMarker}\n${depContent}\n${endMarker}`;
  29. if (readmeContent.match(regex)) {
  30. readmeContent = readmeContent.replace(regex, newContent);
  31. fs.writeFileSync(readmePath, readmeContent);
  32. console.log('✅ README.md 依赖列表已更新!');
  33. } else {
  34. console.error('❌ 未在 README.md 中找到占位符 和 ');
  35. }