问题标签 [git-husky]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
246 浏览

bash - Husky - sed: -i 不能与标准输入一起使用

我有一个钩子,可以在提交消息之前添加 JIRA 票号。我希望能够与团队的其他成员分享它,这就是我使用赫斯基的原因。它在 .git/hooks 中运行良好,但是,在更改文件夹并使用 Husky 调用它之后,我似乎无法让它工作。

我已经查看了其他解决方案,但我不确定如何自己使用它们。我是否需要某种备份文件来执行此操作?如果是这样,我将如何声明?

票号到提交的消息:

包.json:

输出:

任何帮助将不胜感激。谢谢你。

0 投票
1 回答
3744 浏览

git - 如何使用 Husky 预提交挂钩访问提交消息?

我的沙哑脚本:

假设我正在做一个git commit -m "I want that text". 如何在 shell 脚本中访问我的提交消息?我试图在 shell 脚本中回显 $HUSKY_GIT_PARAMS 和 $HUSKY_GIT_STDIN 但没有成功

0 投票
1 回答
357 浏览

husky - Yorkie git 钩子总是以“未找到”而失败

我正在使用 yorkie 2.0.0,并且无法在我的 git 挂钩中运行任何自定义 shell 脚本。我的目录结构如下所示:

我的 package.json 有这个 gitHooks 部分:

commit-msg文件绝对是可执行的,这是ls -l行:

创建提交时,我得到以下输出:

我尝试了各种不同的目录结构,但从未找到。我已将 package.json 中的 gitHook 脚本更改为类似ls .githooks的内容,然后文件就会显示出来。

到底是怎么回事?为什么yorkie找不到我的文件?

(我用 husky 标记了这个,因为 yorkie 是 husky 的一个分支,变化很小,并且没有 yorkie 标签。这里的问题可能不是 yorkie 特有的)

0 投票
1 回答
1276 浏览

angular - Angular 8 Husky,代码覆盖率的预提交条件

我有一个 Angular 8 项目,我正在尝试设置一个用户无法提交的情况,除非某些百分比的代码覆盖率通过。

我正在使用 NX Workspace 和 Husky 在提交之前运行 Linting。我想在此之上运行 ng 测试,以及我可以提供数字的覆盖率测试。如果所有三个都通过,则提交代码。

我现在有这个 package.json 文件。我该如何添加?

0 投票
1 回答
710 浏览

git - 终止于 SIGABRT

我在提交文件之前使用Husky来检查文件。

但是今天突然遇到一些奇怪的问题,如下所示

我试过谷歌和许多 StackOverflow 链接,但没有运气。任何帮助表示赞赏。

0 投票
1 回答
119 浏览

git - GIT:如何在远程分支中的特定文件的 git push 之后触发 npm 脚本?

我有一个要求,一旦我将一个 csv 文件推送到远程分支,它应该调用一个 npm 脚本来处理来自 CSV 文件的数据。

请建议哪种方法是最好的方法。

0 投票
1 回答
2748 浏览

node.js - Husky 没有被 git 事件触发

我创建了一个反应应用程序,它实现了 husky 来捕获 lint 错误:

环境

git version 2.21.0 (Apple Git-122), node v8.16.2,npm v6.4.1

皮棉实现

  • 使用创建了一个反应npx create-react-app my-app-name
  • 使用 eslint 实现eslint --init
  • 将脚本添加到package.json文件中:

    “scripts”: {“lint”: “eslint src/**/*.js”,}

  • 在运行eslint src/**/*.jsnpm run lintlint 错误被完美捕获

赫斯基实施

  • 安装哈士奇npm install husky --save-dev
  • 将哈士奇钩添加到package.json

    "husky": { "hooks": { "pre-commit": "npm run lint:fix", "pre-push": "npm run lint" } }

测试 git 提交

  • git commit -m "test commit"

问题

触发提交时永远不会调用 lint。这里有什么问题?顺便说一句,我已经尝试过这里提出的解决方案。

0 投票
2 回答
2902 浏览

git - 为什么在取消 git 提交后我的更改消失了,如何恢复它们?

这是我所做的:

  1. 编码 8 小时的更改。
  2. git status显示我的所有更改。
  3. git add -A
  4. git commit -m "Foo". 预提交 git 钩子使用huskyand触发lint-staged
  5. 我记得有一个我未能修复的 TypeScript 输入错误,所以我按 Ctrl+C 取消。
  6. 心不在焉,我又跑git commit -m "Foo"了一次,立即取消。
  7. 变化消失了!文件被还原,git status干净,git log并且git reflog不显示新的提交。

为什么我的更改被还原了?我该如何恢复它们?

第1步 第2步

0 投票
0 回答
328 浏览

npm - 等待 husky commit-msg hook 完全完成并运行 Enquirer

我有一个脚本,我在 Git 提交期间运行,以使用 Husky 的commit-msg钩子获取当前提交消息,并使用该脚本发出 HTTP 请求。我的挑战是在 Husky 钩子脚本完成后运行另一个脚本。我要运行的脚本使用Enquirer NPM 包。我尝试在 Husky 的钩子中运行包含 Enquirer 代码的脚本,post-commit但发生的情况是两个脚本同时运行,第二个脚本以 退出commit-msg,所以我想要一种方法等待commit-msg完全完成然后我用 Enquirer 运行那个。我尝试通过关注此线程来解决问题,但子进程也以commit-msg. 输出看起来像 在此处输入图像描述

关于如何规避这个问题的任何想法?谢谢。

下面是哈士奇的配置 在此处输入图像描述

0 投票
1 回答
523 浏览

node.js - 当本地没有可用的 Node.js 时使用 Husky 和 ​​Docker

使用 Docker,当容器中有 Node.js 而本地机器上没有 Node.js 时,我试图让 Husky 工作。

因为它会被 git 命令触发,这里的信息:“如果你在终端中运行 git 命令,husky 将使用你的 shell 中定义的版本PATH”,另一个~/.huskyrc:“如果存在,Husky 将源文件在运行钩子脚本之前。您可以使用它,例如,加载节点版本管理器或在钩子之前运行一些 shell 命令。

像改变PATH它指向容器中的 Node.js 这样的解决方案可以吗?如果可以,怎么做?

提前致谢!