Repository navigation
Expand file tree
/
Copy pathcommitlint.config.js
More file actions
243 lines (223 loc) · 7.68 KB
/
Copy pathcommitlint.config.js
File metadata and controls
243 lines (223 loc) · 7.68 KB
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
// Configuração do commitlint para padronização de mensagens de commit
// Baseado na convenção Conventional Commits
module.exports = {
// Extende a configuração convencional
extends: ['@commitlint/config-conventional'],
// Regras personalizadas para o projeto PetCare DBA Admin
rules: {
// Tipos permitidos de commit
'type-enum': [
2,
'always',
[
'feat', // Nova funcionalidade
'fix', // Correção de bug
'docs', // Documentação
'style', // Formatação, ponto e vírgula, etc
'refactor', // Refatoração de código
'perf', // Melhoria de performance
'test', // Testes
'chore', // Manutenção
'ci', // CI/CD
'build', // Sistema de build
'revert', // Reverter commit
'security', // Correções de segurança
'deps', // Atualizações de dependências
'config', // Configurações
'db', // Mudanças no banco de dados
'ui', // Mudanças na interface
'api', // Mudanças na API
'ai' // Mudanças relacionadas à IA
]
],
// Escopo é opcional mas quando usado deve seguir padrões
'scope-enum': [
2,
'always',
[
'auth', // Autenticação
'dashboard', // Dashboard
'sql-editor', // Editor SQL
'projects', // Gerenciamento de projetos
'tables', // Visualização de tabelas
'dba-ops', // Operações DBA
'ai-assistant', // Assistente IA
'settings', // Configurações
'database', // Conexões e operações de BD
'supabase', // Integrações Supabase
'gemini', // Integração Google Gemini
'security', // Segurança e RLS
'performance', // Otimizações de performance
'monitoring', // Monitoramento
'backup', // Backup e restore
'scripts', // Scripts SQL
'ui', // Interface do usuário
'api', // Integrações de API
'docs', // Documentação
'tests', // Testes
'deps', // Dependências
'config', // Configurações
'deploy', // Deploy e infraestrutura
'core' // Funcionalidades core
]
],
// Formato do header (tipo(escopo): descrição)
'header-max-length': [2, 'always', 100],
'header-min-length': [2, 'always', 10],
// Tipo é obrigatório
'type-empty': [2, 'never'],
'type-case': [2, 'always', 'lower-case'],
// Escopo é opcional
'scope-empty': [0, 'never'],
'scope-case': [2, 'always', 'lower-case'],
// Descrição
'subject-empty': [2, 'never'],
'subject-full-stop': [2, 'never', '.'],
'subject-case': [2, 'always', 'lower-case'],
// Corpo do commit
'body-leading-blank': [2, 'always'],
'body-max-line-length': [2, 'always', 200],
// Footer
'footer-leading-blank': [2, 'always'],
// Quebras (BREAKING CHANGES)
'breaking-change-format': [
2,
'always',
/^BREAKING CHANGE: [\s\S]*$/
]
},
// Configurações específicas
parserPreset: {
parserOpts: {
// Padrão para interpretar o header
headerPattern: /^(\w*)(?:\(([\w$.\-*/ ]*)\))?: (.*)$/,
headerCorrespondence: ['type', 'scope', 'subject'],
// Padrões para notas especiais
noteKeywords: ['BREAKING CHANGE', 'BREAKING-CHANGE'],
// Padrão para referências
referenceActions: [
'close',
'closes',
'closed',
'fix',
'fixes',
'fixed',
'resolve',
'resolves',
'resolved'
],
// Padrão para issues
issuePrefixes: ['#']
}
},
// Configurações de ignores
ignores: [
// Ignorar commits de merge
(commit) => commit.includes('Merge'),
// Ignorar commits automáticos do dependabot
(commit) => commit.includes('dependabot'),
// Ignorar commits de release automáticos
(commit) => commit.includes('chore(release)'),
// Ignorar commits do GitHub
(commit) => commit.includes('github-actions')
],
// Configuração de help
helpUrl: 'https://github.com/conventional-changelog/commitlint/#what-is-commitlint',
// Prompt personalizado (se usando commitizen)
prompt: {
questions: {
type: {
description: 'Selecione o tipo de mudança que você está commitando:',
enum: {
feat: {
description: 'Uma nova funcionalidade',
title: 'Features'
},
fix: {
description: 'Uma correção de bug',
title: 'Bug Fixes'
},
docs: {
description: 'Mudanças apenas na documentação',
title: 'Documentation'
},
style: {
description: 'Mudanças que não afetam o significado do código (espaço em branco, formatação, ponto e vírgula, etc)',
title: 'Styles'
},
refactor: {
description: 'Uma mudança de código que não corrige um bug nem adiciona uma funcionalidade',
title: 'Code Refactoring'
},
perf: {
description: 'Uma mudança de código que melhora a performance',
title: 'Performance Improvements'
},
test: {
description: 'Adicionando testes faltando ou corrigindo testes existentes',
title: 'Tests'
},
chore: {
description: 'Mudanças no processo de build ou ferramentas auxiliares e bibliotecas',
title: 'Chores'
},
ci: {
description: 'Mudanças nos arquivos e scripts de configuração de CI',
title: 'Continuous Integrations'
},
build: {
description: 'Mudanças que afetam o sistema de build ou dependências externas',
title: 'Builds'
},
revert: {
description: 'Reverte um commit anterior',
title: 'Reverts'
},
security: {
description: 'Correções de segurança',
title: 'Security'
},
deps: {
description: 'Atualizações de dependências',
title: 'Dependencies'
},
db: {
description: 'Mudanças relacionadas ao banco de dados',
title: 'Database'
},
ai: {
description: 'Mudanças relacionadas ao assistente IA',
title: 'AI Assistant'
}
}
},
scope: {
description: 'Qual é o escopo desta mudança (ex: auth, dashboard, sql-editor)?'
},
subject: {
description: 'Escreva uma descrição curta e imperativa da mudança:'
},
body: {
description: 'Forneça uma descrição mais longa da mudança:'
},
isBreaking: {
description: 'Existem mudanças que quebram compatibilidade?'
},
breakingBody: {
description: 'Um commit BREAKING CHANGE requer um corpo. Por favor, insira uma descrição mais longa do próprio commit:'
},
breaking: {
description: 'Descreva as mudanças que quebram compatibilidade:'
},
isIssueAffected: {
description: 'Esta mudança afeta alguma issue aberta?'
},
issuesBody: {
description: 'Se issues são fechadas, o commit requer um corpo. Por favor, insira uma descrição mais longa do próprio commit:'
},
issues: {
description: 'Adicione referências de issues (ex: "fix #123", "re #123".):'
}
}
}
};