在提交使用 Husky 的项目时,我收到一个错误消息 not found husky-run
我检查了package.json
它,它有 husky 作为依赖项,我可以在package.json
. 所以我不知道该怎么做才能解决这个问题。此外,我团队中的其他成员可以承诺并为他们工作。
我也尝试过rm -rf node_modules && npm install
,然后再次提交,但仍然出现相同的错误。
其他人有关于如何解决这个问题的想法吗?
fro*_*sty 27
要解决此问题,有两种方法,具体取决于您使用的 Husky 版本。
如果您使用的是 Husky v4 或更低版本,请执行以下操作:
rm -rf .git/hooks
npm install
Run Code Online (Sandbox Code Playgroud)
对于 Husky v6 或更高版本,请执行以下操作:
# For NPM
npm install husky@6 --save-dev \
&& npx husky-init \
&& npm exec -- github:typicode/husky-4-to-6 --remove-v4-config
# For Yarn
yarn add husky@6 --dev \
&& npx husky-init \
&& npm exec -- github:typicode/husky-4-to-6 --remove-v4-config
# or
yarn add husky@6 --dev \
&& yarn dlx husky-init --yarn2 \
&& npm exec -- github:typicode/husky-4-to-6 --remove-v4-config
Run Code Online (Sandbox Code Playgroud)
此时你应该能够提交并让你的钩子再次工作。
我只需将准备脚本添加到我的package.json
:
"scripts": {
...
"prepare": "husky install",
...
}
Run Code Online (Sandbox Code Playgroud)
然后运行yarn install
or npm install
,husky 将被初始化。这将确保查看您的存储库的人也能够运行 husky。
不删除.get/hooks
钩子是行不通的。根据从 4 到 6 版本的迁移手册:
对于 npm 使用执行
npm install husky@6 --save-dev \
&& npx husky-init \
&& npm exec -- github:typicode/husky-4-to-6 --remove-v4-config
Run Code Online (Sandbox Code Playgroud)
纱线用途:
yarn add husky@6 --dev \
&& npx husky-init \
&& npm exec -- github:typicode/husky-4-to-6 --remove-v4-config
Run Code Online (Sandbox Code Playgroud)
和
yarn add husky@6 --dev \
&& yarn dlx husky-init --yarn2 \
&& npm exec -- github:typicode/husky-4-to-6 --remove-v4-config
Run Code Online (Sandbox Code Playgroud)
如果过程中出现任何错误,您可以通过执行简单地恢复更改:
rm -rf .husky && git config --unset core.hooksPath
Run Code Online (Sandbox Code Playgroud)
解释发生了什么:
husky init 设置 Git 挂钩并更新您的package.json
脚本(您可能希望package.json
在运行 husky init 之前提交更改)。
husky-4-to-6
根据您的 husky v4 配置创建钩子。如果--remove-v4-config
通过,之前的配置将被删除(推荐)。
小智 5
这对我有用:
如果您还没有 ~/.huskyrc 文件,请添加一个文件
# ~/.huskyrc
# This loads nvm.sh and sets the correct PATH before running hook
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
Run Code Online (Sandbox Code Playgroud)