Browse Source

chore: use `cz-git` commitizen adapter (#1424)

zhengqbbb 3 years ago
parent
commit
df51fa64db
3 changed files with 37 additions and 18 deletions
  1. 2 1
      .eslintignore
  2. 29 17
      commitlint.config.js
  3. 6 0
      package.json

+ 2 - 1
.eslintignore

@@ -1 +1,2 @@
-/src/packages/**/*.md
+/src/packages/**/*.md
+commitlint.config.js

+ 29 - 17
commitlint.config.js

@@ -1,3 +1,22 @@
+const fs = require('fs');
+const path = require('path');
+const { execSync } = require('child_process');
+
+const components = fs
+  .readdirSync(path.resolve(__dirname, './src/packages/__VUE'), { withFileTypes: true })
+  .filter((dirent) => dirent.isDirectory())
+  .map((dirent) => dirent.name);
+
+// precomputed scope
+const scopeComplete = execSync('git status --porcelain || true')
+  .toString()
+  .trim()
+  .split('\n')
+  .find((r) => r.indexOf('M  ') !== -1)
+  ?.replace(/(\/)/g, '%%')
+  ?.match(/src%%packages%%__VUE%%((\w|-)*)/)?.[1];
+
+/** @type {import('cz-git').UserConfig} */
 module.exports = {
   extends: ['@commitlint/config-conventional'],
   rules: {
@@ -5,11 +24,7 @@ module.exports = {
     'footer-leading-blank': [1, 'always'],
     'header-max-length': [2, 'always', 72],
     'scope-case': [2, 'always', 'lower-case'],
-    'subject-case': [
-      2,
-      'never',
-      ['sentence-case', 'start-case', 'pascal-case', 'upper-case']
-    ],
+    'subject-case': [2, 'never', ['sentence-case', 'start-case', 'pascal-case', 'upper-case']],
     'subject-empty': [2, 'never'],
     'subject-full-stop': [2, 'never', '.'],
     'type-case': [2, 'always', 'lower-case'],
@@ -17,18 +32,15 @@ module.exports = {
     'type-enum': [
       2,
       'always',
-      [
-        'upd',
-        'chore',
-        'docs',
-        'feat',
-        'fix',
-        'test',
-        'refactor',
-        'revert',
-        'style',
-        'release'
-      ]
+      ['upd', 'chore', 'docs', 'feat', 'fix', 'test', 'refactor', 'revert', 'style', 'release']
     ]
+  },
+  prompt: {
+    typesAppend: [{ value: 'upd', name: 'upd:  ' }],
+    customScopesAlign: !scopeComplete ? 'top' : 'bottom',
+    scopes: [...components],
+    defaultScope: scopeComplete,
+    allowCustomIssuePrefixs: false,
+    allowEmptyIssuePrefixs: false
   }
 };

+ 6 - 0
package.json

@@ -95,6 +95,7 @@
     "autoprefixer": "^10.3.4",
     "axios": "^0.21.0",
     "canvas": "^2.9.0",
+    "cz-git": "^1.3.8",
     "eslint": "^7.23.2",
     "eslint-plugin-prettier": "^3.3.1",
     "eslint-plugin-vue": "^7.8.0",
@@ -140,6 +141,11 @@
       "no-debugger": "off"
     }
   },
+  "config": {
+    "commitizen": {
+      "path": "node_modules/cz-git"
+    }
+  },
   "lint-staged": {
     "*.md": "prettier --write",
     "*.{ts,tsx,js,vue,scss}": "prettier --write"