mirror of
https://gitee.com/ant-design-blazor/ant-design-blazor.git
synced 2024-11-29 18:48:50 +08:00
42 lines
1.1 KiB
JavaScript
42 lines
1.1 KiB
JavaScript
|
'use strict';
|
||
|
const message = process.env['HUSKY_GIT_PARAMS'];
|
||
|
const fs = require('fs');
|
||
|
|
||
|
const types = ['build', 'chore', 'ci', 'docs', 'feat', 'fix', 'perf', 'refactor', 'release', 'revert', 'style', 'test'];
|
||
|
|
||
|
const scopes = ['showcase', 'packaging', 'changelog', 'schematics', 'module:*'];
|
||
|
|
||
|
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: 'utf-8' });
|
||
|
const parsed = parseMessage(messages.split('\n')[0]);
|
||
|
if (!parsed) {
|
||
|
return [2, 'always', scopes];
|
||
|
}
|
||
|
const { scope, type } = parsed;
|
||
|
if (scope && !scopes.includes(scope) && type !== 'release' && !/module:.+/.test(scope)) {
|
||
|
return [2, 'always', scopes];
|
||
|
} else {
|
||
|
return [2, 'always', []];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = {
|
||
|
extends: ['@commitlint/config-conventional'],
|
||
|
rules: {
|
||
|
'type-enum': [2, 'always', types],
|
||
|
'scope-enum': getScopesRule,
|
||
|
},
|
||
|
};
|