Dan*_*ger 5 git githooks node.js webstorm nvm
我正在使用nvm该--no-use标志,因为这导致我的终端启动非常慢。这意味着我总是需要nvm use <NODE_VERSION>在新的终端选项卡上运行才能使用node或npm。
我有一个使用Git Hooks配置的项目ghooks,因此,每次移至其他分支或提交某些内容时,WebStorm和SourceTree都会收到不同类型的错误,所有错误都node找不到。这些是其中一些:
SourceTreecheckout:
git -c diff.mnemonicprefix=false -c core.quotepath=false -c
credential.helper=sourcetree checkout BRANCH
Switched to branch 'BRANCH'
M ...
M ...
...
env: node: No such file or directory
Completed with errors, see above
Run Code Online (Sandbox Code Playgroud)
WebStormcommit:
Commit failed with error
0 files committed, 3 files failed to commit: COMMIT_MESSAGE env: node: No such file or directory
Run Code Online (Sandbox Code Playgroud)
在WebStorm中,我认为手动设置node要使用的版本(在之下Preferences > Languages & Frameworks > Node.js and NPM > Node interpreter)可以解决此问题,但并不能解决问题。
我正在使用WebStorm 2016.1.3, Build #WS-145.1616。
删除--no-use标志当然可以解决,但是这不是一个选择,因为这样终端会在启动时变得非常慢。还有其他解决方法吗?
考虑使用husky(也可以使用lint-staged)来更好地控制 Git 挂钩的执行方式。基本上,您可以将所有钩子很好地定义为package.json项目中的 NPM 命令。由于所有这些都进入 Git 钩子,因此它们最终将使用 IDE 或 SourceTree 等 GUI 客户端执行。
该问题似乎与系统对终端和 GUI 应用程序(例如 WebStorm 或 SourceTree)使用不同路径有关。使用husky,您只需定义 a~/.huskyrc并写下要使用的 Node 版本,或nvm事先为其提供源。我也使用nvm,并且从他们的自述文件中获取的配置按原样工作:
# ~/.huskyrc
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
Run Code Online (Sandbox Code Playgroud)
注意。我不隶属于任何人husky,只是享受它的工作方式。
Git hooks 正在从非交互式 shell 调用 node,因此它不使用您在安装后可能在 .bashrc 文件中设置的 shell 环境nvm。
尝试将其添加 . $HOME/.nvm/nvm.sh到您的.git/hooks/pre-commit文件中
最后它应该类似于:
#!/bin/bash
. $HOME/.nvm/nvm.sh
./node_modules/pre-commit/hook
RESULT=$?
[ $RESULT -ne 0 ] && exit 1
exit 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
389 次 |
| 最近记录: |