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

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

网络异常,图片无法展示
|


前言


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


网络异常,图片无法展示
|


环境


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


问题


举个真实场景的🌰


husky 7 初始化后会在工程根目录生成一个.husky目录,


她们推荐用脚本来划分不同的钩子拦截,所以我们加一个最常见的(pre-commit)


网络异常,图片无法展示
|


脚本逻辑很简单,就是执行的shell用的sh(这是最通用的shell了),


类unix和Linux基本都有内置这个~


若是你指定zsh这些,可能其他的环境不一定有zsh~


#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
# npx 就是nod 带的一个临时执行二进制的工具(默认会去拉取)
npx lint-staged


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


若是你用命令行(在你的terminal),因为你能识别node的情况下,


这里面的钩子内容肯定是可以如期执行的~~


在GUI执行就会抛出这么一个


网络异常,图片无法展示
|


找不到npx , 第一反应你可能会觉得诧异,但是只是分析下就很清晰了;


我们指定的shell是sh,它里面的默认配置肯定不知道nvm在哪里。


解决


解决这个问题就是补全识别nvm,这里需要一些Linux知识,


其实也不是很复杂,就一些shell的组合


#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
if ! type node >/dev/null 2>&1; then
  echo 'node 未安装'
  if [ -d "$HOME/.nvm" ]; then
    echo "有.nvm这个目录"
    export NVM_DIR="$HOME/.nvm"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
    matchNvmUseNodeVersion=$(nvm current)
    if [ "$matchNvmUseNodeVersion" == "none" ]; then
      echo "没有找到NVM设置的Node版本,请执行nvm install --lts"
      exit 1
    else
      echo "检测到nvm设置了有效的Node版本: $matchNvmUseNodeVersion"
      export PATH="$NVM_DIR/versions/node/$matchNvmUseNodeVersion/bin:$PATH"
    fi
  fi
else
  echo 'node 已安装'
  nodeVersion=$(node -v)
  npmVersion=$(npm -v)
  echo "node 版本:$nodeVersion"
  echo $(which node)
  echo "npm 版本:$npmVersion"
  echo $(which npm)
fi
npx lint-staged --verbose


网络异常,图片无法展示
|


效果图


网络异常,图片无法展示
|

目录
相关文章
|
8月前
|
开发工具 git 开发者
Git Pull vs. Git Fetch:深度解析
【2月更文挑战第29天】
1869 0
Git Pull vs. Git Fetch:深度解析
|
开发工具 git
vscode 查看git提交日志
vscode 查看git提交日志
498 0
|
开发工具 git
vscode编辑器里怎么显示.git隐藏文件夹到目录里
vscode编辑器里怎么显示.git隐藏文件夹到目录里
293 0
|
3月前
|
开发工具 git C++
【App Service】VS Code直接部署App Service时候遇见 “fatal: not a git repository (or any of the parent directories): .git”
通过VS Code发布Python App Service的时候,遇见了发布失败错误: The deployment failed with error: fatal: not a git repository (or any of the parent directories): .git . Please take a few minutes to help us improve the deployment experience
89 24
|
3月前
|
Java Linux 开发工具
IDEA中git提交前如何关闭code analysis以及开启格式化代码
【10月更文挑战第12天】本文介绍了在 IntelliJ IDEA 中关闭代码分析和开启代码格式化的步骤。关闭代码分析可通过取消默认启用检查或针对特定规则进行调整实现,同时可通过设置 VCS 静默模式在提交时跳过检查。开启代码格式化则需在 `Settings` 中配置 `Code Style` 规则,并通过创建 Git 钩子实现提交前自动格式化。
861 3
|
3月前
|
前端开发 开发工具 git
如何清理 docker 磁盘空间+修改 Gitea 服务器的 Webhook 设置+前端一些好学好用的代码规范-git hook+husky + commitlint
如何清理 docker 磁盘空间+修改 Gitea 服务器的 Webhook 设置+前端一些好学好用的代码规范-git hook+husky + commitlint
46 5
|
3月前
|
前端开发 开发工具 git
搭建Registry&Harbor私有仓库、Dockerfile(八)+前端一些好学好用的代码规范-git hook+husky + commitlint
搭建Registry&Harbor私有仓库、Dockerfile(八)+前端一些好学好用的代码规范-git hook+husky + commitlint
26 0
|
7月前
|
Linux 持续交付 开发工具
版本控制系统的选择:Git vs. Mercurial
【6月更文挑战第20天】Git vs. Mercurial: 两者都是流行的DVCS,Git由Linus Torvalds创建,以其速度和复杂分支管理著称,适合大型项目和有经验的开发者。Mercurial,由Matt Mackall开发,以其简洁命令行和易用性吸引初学者。Git社区更大,扩展更丰富,而Mercurial在某些场景下可能更直观。选择取决于项目需求、团队经验和偏好。
|
6月前
|
开发工具 git
vscode设置 git提交代码忽略node_modules,dist,vscode如何设置不提交node_modules,dist
vscode设置 git提交代码忽略node_modules,dist,vscode如何设置不提交node_modules,dist
619 0
|
6月前
|
开发工具 git
vscode 将已修改代码提交推送git时一直转圈也没有反馈
vscode 将已修改代码提交推送git时一直转圈也没有反馈
707 0