我正在启动一个新的回购程序,认为我应该使用最新的Huksy v6,它是从LintStaged安装的,使用他们的安装指南:
npx mrm lint-staged
// package.json updated with:
"husky": ">=6",
"lint-staged": ">=10",
这将添加必要的包并添加哈士奇文件(包括预提交文件):
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx lint-staged
当我在终端上运行提交时,它工作得很好。但是,如果我试图在GitHub桌面或VSCode中运行提交(我知道有些队友会这样做),这会导致两个方面都出现错误:
npx:命令找不到。哈士奇-使用代码127退出的预提交挂钩(错误)
我安装了npx:
npx -v
// 6.14.10
如果我尝试在globall中安装,如其他StackOverflow建议中所描述的,它将返回一个关于现有位置的警告(包括和退出sudo
):
呃!EEXIST:文件已经存在,符号链接‘../lib/node_node/npx/index.js’-> -> npm ERR!文件存在: /Users/plucks/.nvm/versions/node/v14.15.4/bin/npx npm错误!删除现有文件,然后再试一次,或者运行npm!强行草率地覆盖文件。
有什么我可以做的,以便像VSCode & GitHub桌面这样的程序能够运行?
发布于 2021-05-11 07:44:20
我已经找到解决办法了。希望你也能找到它!
为了清楚起见,这就是:
~/.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"
发布于 2021-08-06 21:38:22
根据这一建议,将以下内容添加到pre-commit
文件中应该会修复它:
export NVM_DIR="$HOME/.nvm/nvm.sh"
. "$(dirname $NVM_DIR)/nvm.sh"
export NVM_DIR="$HOME/.nvm"
a=$(nvm ls | grep 'node')
b=${a#*(-> }
v=${b%%[)| ]*}
export PATH="$NVM_DIR/versions/node/$v/bin:$PATH"
所以完整的文件应该如下所示:
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
export NVM_DIR="$HOME/.nvm/nvm.sh"
. "$(dirname $NVM_DIR)/nvm.sh"
export NVM_DIR="$HOME/.nvm"
a=$(nvm ls | grep 'node')
b=${a#*(-> }
v=${b%%[)| ]*}
export PATH="$NVM_DIR/versions/node/$v/bin:$PATH"
npm run test
发布于 2022-02-10 20:19:46
对于husky>=6
:更新.husky/pre-commit
文件以包含以下内容:
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
npx lint-staged
这将找到并公开正在使用的当前node
路径和npx
路径,该路径已配置为Node nvm
。
https://stackoverflow.com/questions/67115897
复制相似问题