Browse Source

chore: upd changelog script

richard1015 4 years ago
parent
commit
725e9d3a7e
1 changed files with 85 additions and 0 deletions
  1. 85 0
      jd/updateChangelog.js

+ 85 - 0
jd/updateChangelog.js

@@ -0,0 +1,85 @@
+const fs = require('fs');
+const path = require('path');
+const changelog = fs.readFileSync(
+  path.join(__dirname, '../CHANGELOG.md'),
+  'utf8'
+);
+const typeList = [
+  { type: 'fix', icon: '🐛' },
+  { type: 'feat', icon: '✨' },
+  { type: 'chore', icon: '👷' },
+  { type: 'docs', icon: '📝 ' },
+  { type: 'style', icon: '💄' },
+  { type: 'refactor', icon: '🎨' },
+  { type: 'perf', icon: '⚡' },
+  { type: 'test', icon: '✅ ' }
+];
+const replaceMd = {
+  content: '',
+  setContent(content) {
+    replaceMd.content = content;
+    return replaceMd;
+  },
+  getContent() {
+    return replaceMd.content;
+  },
+  //版本号改成二级标题
+  changeTitle() {
+    replaceMd.content = replaceMd.content.replace(
+      /### (?=\[\d\.\d\.\d\])/g,
+      '## '
+    );
+    return replaceMd;
+  },
+  //修改日期位置
+  changeDate() {
+    replaceMd.content = replaceMd.content.replace(
+      /(?<=\[\d\.\d\.\d\]\([\s\S]+\)) \((\d\d\d\d\-\d\d\-\d\d)\)(?=\n)/g,
+      '\n`$1`'
+    );
+    return replaceMd;
+  },
+  //增加type内容
+  changeType() {
+    function replaceType(type, icon) {
+      replaceMd.content = replaceMd.content.replace(
+        new RegExp(
+          `(?<=### ${type}\\n\\n)\\* ([\\s\\S]+?)\\n+(?=[###|##])`,
+          'g'
+        ),
+        function(match) {
+          return match.replace(
+            new RegExp(`\\* ([\\s\\S]+?)(?=\\n)`, 'g'),
+            `* ${icon} ${type}: $1`
+          );
+        }
+      );
+    }
+    typeList.forEach(e => {
+      replaceType(e.type, e.icon);
+    });
+    return replaceMd;
+  },
+  //删除type标题
+  deleteType() {
+    typeList.forEach(e => {
+      replaceMd.content = replaceMd.content.replace(
+        new RegExp(`### ${e.type}\\n+`, 'g'),
+        ''
+      );
+    });
+    return replaceMd;
+  }
+};
+
+const newChangelog = replaceMd
+  .setContent(changelog)
+  .changeTitle()
+  .changeDate()
+  .changeType()
+  .deleteType();
+fs.writeFileSync(
+  path.join(__dirname, '../CHANGELOG.md'),
+  newChangelog.getContent(),
+  'utf8'
+);