社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

VS Code的Git Control无法正确识别husky(NVM)问题

CRPER • 3 年前 • 428 次点击  
阅读 108

VS Code的Git Control无法正确识别husky(NVM)问题

前言


用了husky 7(.husky) ,里面钩子脚本无法很好的支持vscode git control这个功能
image.png

环境

  • mac
  • node管理工具(nvm)
  • husky 7

问题

举个真实场景的🌰

husky 7 初始化后会在工程根目录生成一个.husky目录,
她们推荐用脚本来划分不同的钩子拦截,所以我们加一个最常见的(pre-commit)
image.png
脚本逻辑很简单,就是执行的shell用的sh(这是最通用的shell了),
类unix和Linux基本都有内置这个~
若是你指定zsh这些,可能其他的环境不一定有zsh~

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

# npx 就是nod 带的一个临时执行二进制的工具(默认会去拉取)
npx lint-staged
复制代码

逻辑很简单,就是提交之前走一边lint-staged的逻辑

若是你用命令行(在你的terminal),因为你能识别node的情况下,
这里面的钩子内容肯定是可以如期执行的~~

在GUI执行就会抛出这么一个
image.png
找不到npx , 第一反应你可能会觉得诧异,但是只是分析下就很清晰了;
我们指定的shell是sh,它里面的默认配置肯定不知道nvm在哪里。

解决

解决这个问题就是补全识别nvm,这里需要一些Linux知识,
其实也不是很复杂,就一些shell的组合

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

export NVM_DIR="$HOME/.nvm/nvm.sh"
. "$(dirname $NVM_DIR)/nvm.sh"

export NVM_DIR="$HOME/.nvm"
matchNvmUseNodeVersion=$(nvm ls | grep 'node'| grep -oE "v([0-9]+\.?)+")
export PATH="$NVM_DIR/versions/node/$matchNvmUseNodeVersion/bin:$PATH"

npx lint-staged

复制代码

image.png

效果图

2021-07-22 15.00.59.gif

总结

有不对之处请及时留言,会及时修正,谢谢阅读

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/117449
 
428 次点击