git - Husky 4.x+ 不适用于 Visual Studio Git

标签 git visual-studio-2019 husky

哈士奇 changed it's path handling with 4.0.0 .在此更改后,它会在提交 时引发以下错误来自 Visual Studio :

husky > pre-commit (node v12.12.0)/c/path/to/repo/node_modules/.bin/lint-staged: 
line 5: cygpath: command not foundinternal/modules/cjs/loader.js:797 throw err;

^Error: Cannot find module 'C:\lint-staged\bin\lint-staged.js' 
 at Function.Module._resolveFilename (internal/modules/cjs/loader.js:794:15) 
 at Function.Module._load (internal/modules/cjs/loader.js:687:27)
 at Function.Module.runMain (internal/modules/cjs/loader.js:1025:10) 
 at internal/main /run_main_module.js:17:11 { code: 'MODULE_NOT_FOUND', requireStack: []}

husky > pre-commit hook failed 
(add --no-verify to bypass)

但是,在提交 时来自 CLI ,它按预期工作。鉴于错误消息有 'C:\lint-staged\bin\lint-staged.js'作为文件路径,我假设 Visual Studio 以不同的方式处理路径。

我正在尝试找到一种方法来在 Visual Studio 中完成这项工作。我在企业环境中,所以我希望有一种方法可以在存储库中包含此配置(而不是需要手动本地设置)。

我的 package.json 中包含了 husky 配置
...
"husky":{
    "hooks":{ "pre-commit": "lint-staged"}
},
"lint-staged":{
    "!(*.min.*)js": "eslint --fix"
},
...


我目前正在使用:
nvm 1.1.7 与节点 12.16.1
哈士奇 4.2.5
lint 阶段 10.1.3
视觉工作室 2019

最佳答案

我找到了一个解决方案,尽管它不是一个完整的解释。简单的解决方法是像这样修改你的 husky 命令:

...
"husky":{
    "hooks":{ "pre-commit": "npx lint-staged"}
},
...
指定 NPM 命令可以纠正路径问题。我在 lint-staged github 中对 2018 年的一个问题的回复中找到了建议,来源 here .
编辑:我只是想提请注意 TetraDev 的评论。它们是正确的,您必须包含 git add .在任何代码更改任务(linting、prettier 等)之后的 lint 暂存任务中,以便将所做的更改应用于您的提交。

关于git - Husky 4.x+ 不适用于 Visual Studio Git,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61196309/

相关文章:

git - 从 git 存储库历史记录中删除文件

git - 如何更改 From : address used for git format-patch?

javascript - 加载规则时出错 '@typescript-eslint/dot-notation'

visual-studio - 从 Visual Studio 连接到 mac 时出错

visual-studio - Visual Studio 2019 键盘停止响应或不断重复字符

git - 自定义 commitlint header 格式

node.js - 赫斯基给出错误 SyntaxError : Use of const in strict mode

git cherry 选择一系列后续提交,包括 merge

git - intellij IDEA 中每个模块的不同存储库

visual-studio - 双击 Visual Studio 2019 时如何禁用编辑项目?