Большую часть времени в нашем проекте мы помещаем код в случайное сообщение коммита, но для лучшей практики мы должны писать номер тикета Jira в каждом коммите, чтобы всякий раз, когда мы хотим найти, какие файлы я изменил для этого тикета, его можно было отслеживается легко.
Итак, здесь я расскажу вам, как интегрировать хаски в свой проект. Так что в будущем это ограничит вас писать номер билета в вашем сообщении о коммите. Основное преимущество этой реализации заключается в том, чтобы показать вашему клиенту прозрачность, например, какой код ссылается на какой тик.
В этом примере я покажу вам, как интегрировать его в код Javascript. Во-первых, вам нужно установить необходимые пакеты в свой проект, а затем вы можете написать какой-нибудь скрипт, используя какое-то регулярное выражение, которое заставит вас подтолкнуть вашу фиксацию с требуемым шаблоном.
В нашем текущем проекте Jira у нас есть такой номер тикета: NNDPF-[ticket_no]. Итак, я хочу отправить фиксацию с этим шаблоном
введите: [номер тикета] сообщение фиксации
Пример: → исправление: [NNDPF-1021] исправлен API регистрации клиента
fix: это будет префикс фиксации, определяющий тип фиксации. Это может быть исправление/подвиг/стиль/рефакторинг
[NNDPF-1021]:это будет номер тикета Jira. Это должно быть включено в ваше сообщение коммита.
исправлен API регистрации клиента:это фактическое сообщение о коммите, в котором уточняется, что на самом деле вы сделали с этим изменением
Вот реализация кода с помощью Husky
npm install --save-dev @commitlint/{cli,config-conventional} npm install husky --save-dev npx husky install npx husky add .husky/commit-msg 'npx --no -- commitlint --edit ${1}'
Создайте новый файл в корне проекта со следующим именем файла commitlint.config.js
и скопируйте в него приведенный ниже код.
const typeEnum = [ "feat", // implement new feature "fix", // some quick fix "style", "refactor", "test" // for test cases ]; module.exports = { extends: ["@commitlint/config-conventional"], rules: { "subject-case": [2, "always", "sentence-case"], "subject-empty": [2, "never"], "type-empty": [2, "never"], "type-enum": [2, "always", typeEnum], }, plugins: [ { rules: { "type-enum": ({ type, subject }) => { if (typeEnum?.includes(type) && /^\[NNDPF-\d+\] /.test(subject)) { return [true]; } return [ false, !/^\[NNDPF-\d+\] /.test(subject) ? `Commit message should start with <type>: '[NNDPF-<number>] '.` : !typeEnum?.includes(type) && `Type should be 'feat', 'fix', 'style', 'refactor', 'test',`, ]; }, }, }, ], };
Итак, на Jira это будет выглядеть так.