Большую часть времени в нашем проекте мы помещаем код в случайное сообщение коммита, но для лучшей практики мы должны писать номер тикета 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 это будет выглядеть так.