网站首页 > 开源技术 正文
原文:(https://blog.typicode.com/husky-git-hooks-autoinstall/)
新版本husky的另外一个改变就是它不再自动安装Git 钩子。
作为替代,最新的推荐方式是在package.json文件中有一个prepare* script:
{
"prepare": "husky install"
}
让我们看看为什么这么做?
(*)不过对于Yarn 2 有一个例外,具体,看文档。
包管理器的最佳实践
数年以来,包管理器都不鼓励将 postinstall 用于除编译之外的其他任何事。
通过移除自动安装,使得新版本husky成为一个好的“公民”,同时也是第一个支持Yarn 2 零安装的版本(在这之前, it needed to be unplugged(拔插头、疏通的意思))。
来自 npm 文档:最佳的实践:
您几乎不需要显示设置 preinstall 或者 install 脚本。如果您正在这样做,请考虑是否有其他选择。编译是install 或者 preinstall 脚本唯一有效的用途。
来自 Yarn 2 文档:关于 postinstall的注意事项:
postinstall 脚本 对您的用户有着非常真实的影响。[......],要点是,我们认为 postinstall 脚本不是一个可行的解决方案。
自动安装最近的问题
随着最近版本管理器的改进(npm7,Yarn 2),用户在husky 4自动安装上,开始出现难以调试的问题。
它变得没那么可靠:为了提供更快的安装速度,包管理器使用缓存(这个是非常好的)。
结论是,现在husky 4的 postinstall 脚本,并没有每次都运行。
例如,第一次安装的时候,由于某些原因,安装失败了,重新运行 npm install ,由于缓存,将不会运行 postinstall 脚本。
也不会有更多的错误信息:包管理器现在隐藏了 postinstall 的输出。
对于钩子已经被安装这件事,没有更多的确认信息。或者提示信息,去帮助用户调试问题。
这似乎并不常见,但是在开源项目中,有着不同经验的用户可能会 clone 同一个项目。因此,不同的提示信息是很重要的。尤其对那些有着巨大副作用的工具(改变 Git 钩子)像husky。
这个行为(只运行一次,不输出)是有意义的,假如你认为 postinstall 就只应该用来编译。
总结
husky 放弃自动安装的原因:
- 跟随包管理器的最佳实践和演变
- 变得更加可靠和可预料
- 对不同经验的人们保持用户友好的消息提示
2021年4月2号
猜你喜欢
- 2024-09-28 ChipWhisperer-Husky,手掌大小的功耗分析和故障注入工具
- 2024-09-28 Meta开源用于数学等复杂推理AI Agent—HUSKY
- 2024-09-25 Blued一哥:谁给他的勇气自封gay一哥,梁静茹吗?
- 2024-09-25 词raucous,bellow,husky,Siberian,Serbian,Samoyed,trove
- 2024-09-25 打开才知道 里面多有货(怎么打开不知道密码的手机)
- 2024-09-25 代码规范—husky + lint-staged实现commit之前的代码检查
- 2024-09-25 拒绝平庸!哈士奇意式轻奢复古冰箱
- 2024-09-25 冠品涂装20年-固瑞克HUSKY 气动隔膜泵的概述及优势
- 2024-09-25 美国代购的husky全天候脚垫终于装上了
- 2024-09-25 .NET 也有 Husky 了(.net guid)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)