编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

为什么husky不再使用自动安装脚本

wxchong 2024-09-25 23:08:23 开源技术 75 ℃ 0 评论

原文:(https://blog.typicode.com/husky-git-hooks-autoinstall/)

新版本husky的另外一个改变就是它不再自动安装Git 钩子。

作为替代,最新的推荐方式是在package.json文件中有一个prepare* script:

Bash
{
  "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号

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表