-
Notifications
You must be signed in to change notification settings - Fork 16
/
commitlint.config.js
40 lines (34 loc) · 1.26 KB
/
commitlint.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import { execSync } from 'child_process';
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
const scopes = fs
.readdirSync(path.resolve(path.dirname(fileURLToPath(import.meta.url)), 'src'))
.map(i => i.toLowerCase());
const gitStatus = execSync('git status --porcelain || true').toString().trim().split('\n');
const scopeComplete = gitStatus
.find(r => ~r.indexOf('M src'))
?.replace(/(\/)/g, '%%')
?.match(/src%%((\w|-)*)/)?.[1];
const subjectComplete = gitStatus
.find(r => ~r.indexOf('M src'))
?.replace(/\//g, '%%')
?.match(/src%%((\w|-)*)/)?.[1];
const Configuration = {
extends: ['@jsxiaosi/commitlint-config'],
prompt: {
// 范围设置
scopes: [...scopes, 'mock'],
// 范围是否可以多选
enableMultipleScopes: true,
// 多选范围后用标识符隔开
scopeEnumSeparator: ',',
// 设置 选择范围 中 为空选项(empty) 和 自定义选项(custom) 的 位置
customScopesAlign: !scopeComplete ? 'top' : 'bottom',
// 如果 defaultScope 与在选择范围列表项中的 value 相匹配就会进行星标置顶操作。
defaultScope: scopeComplete,
// 描述预设值
defaultSubject: subjectComplete && `[${subjectComplete}] `,
},
};
export default Configuration;