提问者:小点点

在哈士奇的commit-msg钩子中添加commitlint的正确方法是什么?


我有一个有角度的项目,我想在那里强制常规提交。我还没有能够成功地拥有正确的钩子,以防止错误的钩子。

我从本教程开始,教程中提到要将以下内容添加到package.json中:

{
  "hooks": {
    "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
  }
}

这不起作用(它仍然允许坏的提交),所以我做了一些研究,并找到了这篇文章,它说上面是针对husky 4的,而对于husky 5我应该运行这个命令:

npx husky add .husky/commit-msg 'npx commitlint --edit $1'

据我所知,委员会的官方文件也是这么说的。然而,当我运行它的时候,我得到了这个奇怪的、什么都不做的提示:

PS C:\...\MyProj> npx husky add .husky/commit-msg 'npx --no-install commitlint --edit $1'
Usage
  husky install [dir] (default: .husky)
  husky uninstall
  husky set|add <file> [cmd]

这只是让人感到困惑,因为我所写的内容实际上是遵循提示符的第三行。

有没有人经历过这些,可以帮助我理解我需要做什么?

package.json中的相关部分:

"scripts": {
    "postinstall": "husky install"
  },
  "private": true,
  "devDependencies": {
    "@commitlint/cli": "^12.1.1",
    "@commitlint/config-conventional": "^12.1.1",
    "husky": "^6.0.0"
  }
}

共1个答案

匿名用户

运行npx husky add.husky/commit-msg'npx--no-install commitlint--edit$1'似乎出现了一个问题,因为命令部分不止一个单词。我找到的一个变通办法是把它分成两部分。

1-调用npx husky add.husky/commit-msg'npx--no-安装commitlint--edit$1'

这在正确的位置创建了一个空/缺省文件,其内容如下:

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

undefined

2-然后我将undefined替换为npx--no-install commitlint--edit$1,它可以工作

委员会文件的这一部分帮助我理解这样做是可以的

希望这能帮助其他遇到同样问题的人!