-
Notifications
You must be signed in to change notification settings - Fork 42
/
commitlint.config.js
41 lines (36 loc) · 1021 Bytes
/
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
41
'use strict';
const fs = require('fs');
const message = process.env['HUSKY_GIT_PARAMS'];
const types = ['feat', 'fix', 'chore', 'docs', 'style', 'refactor', 'perf', 'test', 'revert'];
const scopes = ['hooks', 'icons', 'platform', 'site', 'ui', 'utils', 'vscode-extension'];
function parseMessage(message) {
const PATTERN = /^(\w*)(?:\((.*)\))?!?: (.*)$/;
const match = PATTERN.exec(message);
if (!match) {
return null;
}
return {
type: match[1] || null,
scope: match[2] || null,
};
}
function getScopesRule() {
const messages = fs.readFileSync(message, { encoding: 'utf8' });
const parsed = parseMessage(messages.split('\n')[0]);
if (parsed) {
const { scope } = parsed;
if (scope) {
return [2, 'always', scopes];
}
}
return [2, 'always', []];
}
module.exports = {
extends: ['@commitlint/config-conventional'],
rules: {
'type-enum': [2, 'always', types],
'scope-enum': getScopesRule,
'body-max-length': [0],
'body-max-line-length': [0],
},
};