-
Notifications
You must be signed in to change notification settings - Fork 0
/
.commitlintrc.js
126 lines (122 loc) · 4.1 KB
/
.commitlintrc.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
115
116
117
118
119
120
121
122
123
124
125
126
// Default template copied from: https://cz-git.qbb.sh/config/
const { execSync } = require("child_process");
// Get the list of affected projects
const turboOutput = execSync("npx turbo run build --filter=[HEAD^1] --dry=json")
.toString()
.trim();
const scopes = JSON.parse(turboOutput)
.tasks.filter((task) => task.task === "build")
.map((task) => task.package);
/** @type {import('cz-git').UserConfig} */
module.exports = {
// I'm just putting something in here because this rules key can't be empty
// If you see red underline in the rules object, make sure it's not "LintLens", that's just a false positive from ESLint VSCode extension
rules: {
// @see: https://commitlint.js.org/#/reference-rules
"header-max-length": [2, "always", 120],
"scope-case": [0],
"subject-case": [0],
},
prompt: {
// alias: { fd: "docs: fix typos" },
messages: {
type: "Select the type of change that you're committing:",
scope: "Denote the SCOPE of this change (optional):",
customScope: "Denote the SCOPE of this change:",
subject: "Write a SHORT, IMPERATIVE tense description of the change:\n",
body: 'Provide a LONGER description of the change (optional). Use "|" to break new line:\n',
breaking:
'List any BREAKING CHANGES (optional). Use "|" to break new line:\n',
footerPrefixSelect:
"Select the ISSUES type of changeList by this change (optional):",
customFooterPrefix: "Input ISSUES prefix:",
footer: "List any ISSUES by this change. E.g.: #31, #34:\n",
generatingByAI: "Generating your AI commit subject...",
generatedSelectByAI: "Select suitable subject by AI generated:",
confirmCommit: "Are you sure you want to proceed with the commit above?",
},
types: [
{ value: "feat", name: "feat: A new feature", emoji: ":sparkles:" },
{ value: "fix", name: "fix: A bug fix", emoji: ":bug:" },
{
value: "docs",
name: "docs: Documentation only changes",
emoji: ":memo:",
},
{
value: "style",
name: "style: Changes that do not affect the meaning of the code",
emoji: ":lipstick:",
},
{
value: "refactor",
name: "refactor: A code change that neither fixes a bug nor adds a feature",
emoji: ":recycle:",
},
{
value: "perf",
name: "perf: A code change that improves performance",
emoji: ":zap:",
},
{
value: "test",
name: "test: Adding missing tests or correcting existing tests",
emoji: ":white_check_mark:",
},
{
value: "build",
name: "build: Changes that affect the build system or external dependencies",
emoji: ":package:",
},
{
value: "ci",
name: "ci: Changes to our CI configuration files and scripts",
emoji: ":ferris_wheel:",
},
{
value: "chore",
name: "chore: Other changes that don't modify src or test files",
emoji: ":hammer:",
},
{
value: "revert",
name: "revert: Reverts a previous commit",
emoji: ":rewind:",
},
],
useEmoji: false,
emojiAlign: "center",
useAI: false,
aiNumber: 1,
themeColorCode: "",
scopes,
allowCustomScopes: true,
allowEmptyScopes: true,
customScopesAlign: "top",
customScopesAlias: "custom",
emptyScopesAlias: "empty",
upperCaseSubject: false,
markBreakingChangeMode: false,
allowBreakingChanges: ["feat", "fix"],
breaklineNumber: 100,
breaklineChar: "|",
skipQuestions: [],
issuePrefixes: [
{ value: "closed", name: "closed: ISSUES has been processed" },
],
customIssuePrefixAlign: "top",
emptyIssuePrefixAlias: "skip",
customIssuePrefixAlias: "custom",
allowCustomIssuePrefix: true,
allowEmptyIssuePrefix: true,
confirmColorize: true,
maxHeaderLength: 120,
maxSubjectLength: Infinity,
minSubjectLength: 0,
scopeOverrides: undefined,
defaultBody: "",
defaultIssues: "",
defaultScope: "",
defaultSubject: "",
},
};