-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcommitlint.config.js
114 lines (108 loc) · 2.84 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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
const fs = require('fs');
/*
* Type-Enums and their documentation as reusable const.
*/
const typeEnumDescription = {
fix: {
description: 'A code change that fixes an error or bug',
title: 'Fix',
emoji: '💉',
},
feat: {
description: 'Adding new functionality',
title: 'Feature',
emoji: '🐣',
},
docs: {
description: 'Documentation only changes',
title: 'Documentation',
emoji: '📜',
},
format: {
description:
'Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)',
title: 'Formatting',
emoji: '💎',
},
refactor: {
description: 'A code change that neither fixes a bug nor adds a feature',
title: 'Code Refactoring',
emoji: '♻',
},
perf: {
description: 'A code change that improves performance',
title: 'Performance Improvements',
emoji: '🚀',
},
deprecate: {
description:
'A code change that deprecates APIs or is related to their deprecation',
title: 'Code Deprecations',
emoji: '🕸',
},
test: {
description: 'Adding missing tests or correcting existing tests',
title: 'Tests',
emoji: '🛂',
},
build: {
description:
'Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)',
title: 'Builds',
emoji: '📦',
},
ci: {
description:
'Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)',
title: 'Continuous Integrations',
emoji: '🏭',
},
ops: {
description:
'Changes to our CI / CD configuration files and scripts (example scopes: GH Actions, Heroku, Docker...)',
title: 'DevOps',
emoji: '🏭',
},
chore: {
description: "Other changes that don't modify src or test files",
title: 'Chores',
emoji: '⚙',
},
revert: {
description: 'Reverts a previous commit',
title: 'Reverts',
emoji: '🗑',
},
};
/*
* Scope-Enums defined from constants and Nx projects.
*/
const baseScopes = ['release'];
const scopeEnum = () => {
const packagesNames = fs
.readdirSync('packages', { withFileTypes: true })
.filter((item) => item.isDirectory())
.map((item) => item.name);
return [...baseScopes, ...packagesNames];
};
const Configuration = {
/*
* Resolve and load @commitlint/config-conventional from node_modules.
* Referenced packages must be installed
*/
extends: ['@commitlint/config-conventional'],
/*
* Override rules from @commitlint/config-conventional
*/
rules: {
/*
* Customized types matching CU folders
*/
'type-enum': [2, 'always', Object.keys(typeEnumDescription)],
/*
* Scope enums derived from projects registered in `workspace.json`
*/
'scope-enum': [2, 'always', scopeEnum()],
},
};
module.exports = Configuration;