Конфигурация lint-staged + commitizen, подходящая для командной строки и Intellij

Я пытаюсь создать такую ​​конфигурацию, которая будет работать как для командной строки, так и для Intellij.

Вот часть моего package.json

"config": {
  "commitizen": {
    "path": "cz-conventional-changelog"
  }
},
"husky": {
  "hooks": {
    "pre-commit": "lint-staged",
    "prepare-commit-msg": "exec < /dev/tty && git cz --hook",
    "commit-msg": "validate-commit-msg"
  }
},
"devDependencies": {
  "commitizen": "^3.1.1",
  "cz-conventional-changelog": "^2.1.0",
  "eslint": "^5.15.1",
  "eslint-config-airbnb-base": "^13.1.0",
  "eslint-plugin-import": "^2.16.0",
  "eslint-plugin-jest": "^22.4.1",
  "husky": "^1.3.1",
  "lint-staged": "^8.1.5",
  "standard-version": "^5.0.1",
  "validate-commit": "^3.4.0"

он работает хорошо из командной строки, но при фиксации с Intellji он говорит что-то вроде

0 файлов подтверждено, 1 файл не был зафиксирован: feat(asdf): asdfasd fasdf asdfa333 husky > предварительная фиксация (узел v10.13.0) Сохранение изменений... [запущено] Сохранение изменений... [пропущено] → Нет частично подготовленных файлов найдено... Запуск линтеров... [запущено] Выполнение задач для *.js [запущено] eslint --fix [запущено] eslint --fix [завершено] git add [запущено] git add [выполнено] Выполнение задач для *. js [выполнено] Запуск линтеров... [завершено] husky > prepare-commit-msg (узел v10.13.0) /bin/sh: 1: не удается открыть /dev/tty: нет такого устройства или адреса husky> prepare-commit- Ошибка подключения к msg (не может быть обойдена с помощью --no-verify из-за спецификаций Git)

Это решение для этого?

0 ответов

Я только столкнулся с этой проблемой самостоятельно.

Проблема может быть решена довольно легко, просто добавьте короткое замыкание, когда TTY выходит из строя

exec < /dev/tty && git cz --hook || true # <-- Notice the '|| true'

Эта проблема также поднималась в официальном хранилище инструмента.

см.: https://github.com/commitizen/cz-cli/issues/634

Другие вопросы по тегам