问题标签 [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 投票
1 回答
592 浏览

git - 哈士奇预推钩构建前

我想实施一个 husky 规则以使其运行yarn build并确保将要推送的内容不会破坏应用程序。

我浏览了网页,但仍然不确定以下方法是否正确?

0 投票
1 回答
1668 浏览

git - Jest - 查找相关测试并在 `pre-commit` Hook 上运行它们

我有 Jest 作为我的测试运行者。我的提交钩子里也有哈士奇。我想在每次提交、受我的更改和相关更改影响的测试上运行。

我在 Jest 的文档中看到了以下选项,但我在使它们起作用方面没有取得进展:

您是否有文档或任何可能有用的示例。或者向我解释我怎么能做到这一点。?谢谢!!

0 投票
0 回答
35 浏览

git - 保护 git 存储库中的删除/重命名文件

git 存储库中是否可以有一个或多个文件可以更改但不能删除或重命名?用例是关于存储库设置,其中多个env文件只能由开发人员调整,但要防止他们意外删除或重命名文件,因为如果没有使用该确切名称的文件,CI 会中断。

我的一个想法是编写某种 bash 或节点脚本并将其与huskypre-commit挂钩到git 挂钩中,但我不确定该脚本会是什么样子。另一个想法是最初为文件设置正确的文件权限,但我不确定这些权限是否会保留在克隆在不同操作系统平台上的 git 存储库中。env

无论如何,也许有一些更惯用和更聪明的方法来做到这一点。令人惊讶的是,我在网上找不到任何东西......所以如果不是太麻烦,各种创造性的解决方案都可以接受。谢谢!

0 投票
1 回答
382 浏览

git - 使用 Husky 和/或 Lint-Staged 检查 CI 服务器上的代码质量

在 Python 世界中,通常使用pre-commit,它提供了一个git commit钩子,然后在您的 CI 服务器上运行pre-commit run --all-files,它将忽略提交并在所有文件上运行 linting 工具。这可以确保,例如,拉取请求必须通过 linting 要求,否则构建将失败。

但是,在 JS 世界中,使用Husky + Lint-Staged似乎很常见,它满足了git commit钩子要求,但似乎没有等效于pre-commit run --all-files. Husky 用户如何在他们的 CI 中检查 pull request 代码?

0 投票
1 回答
152 浏览

git - 为什么未跟踪的文件会被提交?

当我输入时git status,我得到下面的输出。

然后我进行提交git commit -m 'Test commit.',不知何故,未跟踪的文件出现在提交中。

为什么未跟踪的文件会出现在提交中,即使下面只有 3 个文件Changes to be committed?

0 投票
1 回答
1076 浏览

node.js - Husky 预提交钩子在提交后完成

编写以下脚本是为了在预提交挂钩上按键对 JSON 文件进行排序:

我将脚本附加到我package.jsonhuskyprecommit 钩子上:

结果是提交完成,然后脚本才完成创建的未暂存更改。Finished sorting files脚本本身与最后打印的消息同步运行。

我的问题是,我怎样才能使它同步;先跑完node ./scripts/husky/json-sort src/assets/translations,然后git commit

谢谢!

0 投票
1 回答
1841 浏览

bash - Husky:预提交挂钩启动 bash 脚本,但不等待用户选择

当我进行提交时,bash 脚本会启动,但不会等待用户选择

.huskyrc 文件

pre_commit.sh 文件

0 投票
1 回答
2971 浏览

git - 仅在发生更改时使用 husky pre-push 运行测试

如标题所示,目前我已将我的应用程序配置为在每次执行 git push 时运行测试,

但显然它不能很好地扩展,测试越多,推送所需的时间就越多,那么有没有一种方法可以仅在文件发生更改时触发测试?


最终我发现 Jest 有一个很好的标志,--changedSince 所以你可以在你的 package.json 文件中有这样的东西:

"test:unit": "test:unit --changedSince=@{push}"

这将只执行自上次推送以来已更改的文件的测试,与远程 HEAD 进行比较

0 投票
0 回答
1579 浏览

npm - Husky 安装失败无法读取 null 的“toString”属性

我有一段时间在安装 husky(使用 lint-staged)时遇到问题,非常感谢任何帮助。我的项目设置是:node JS,带有 eslint 的 npm,更漂亮的设置,现在尝试使用 lint-staged 添加 husky。

主要问题:

安装 husky “npm install husky --save-dev” 时,预提交文件(在“.git/hooks”文件夹中)没有被 Husky 代码修改!安装消息:

系统详细信息:操作系统:Windows 10 Git:git 版本 2.28.0 node -v v12.16.1 husky:4.2.5

我尝试了以下方法:(1 Git 已注册为 env PATH 变量(2 全局 gitconfig 文件中没有设置 hooksPath 将指向本地工作区中的 .git/hooks 以外的另一个目录(3 安装/卸载 Husky( 4 通过删除 .sample 使预提交文件可执行(5 完全删除 .git/hooks/pre-commit 文件(6 在“package.json”文件中添加必要的脚本,如下所示)

我仍然没有运气。

因此,在提交更改时,husky 根本不会运行!

提前感谢您的帮助!

0 投票
0 回答
358 浏览

git - git hooks如何通过命令行参数和stdin获取参数?

我想使用参数获取价值并将它们用于预推挂钩。如何获得?以及如何为 HUSKY_GIT_PARAMS 和 HUSKY_GIT_STDIN 设置环境变量?

下面是我的 .huskyrc 文件: