husky 9.0升级指南

新年伊始,我们带来了激动人心的更新!

注意:使用安装方式husky@latest可以获得之后发布的错误修复程序。

介绍husky init

v8

复制代码
npm pkg set scripts.prepare="husky install"
npm run prepare
npx husky add .husky/pre-commit "npm test"

v9

现在将 Husky 添加到项目中比以往任何时候都更加简单。只需一行代码即可完成与上述相同的操作。无需再阅读文档即可上手。

复制代码
npx husky init

添加新钩子

v8

复制代码
npx husky add  .husky/pre-commit "npm test"
git add --chmod=+x .husky/pre-commit # On Windows

v9

添加钩子就像创建一个文件一样简单。您可以使用您喜欢的编辑器、脚本或基本echo命令来完成此操作。例如,在 Linux/macOS 上:

复制代码
echo "npm test" > .husky/pre-commit

进一步缩小尺寸

v8已经是体积最小的 Git hooks 管理器了,大约只有6kB

v9更进一步,将大小减少到仅3kB,这很可能使它成为工具包中最小的开发依赖项。

为了让您对它的体积大小有个概念,项目中最大的文件是 MIT 许可证 😄

更多精彩内容敬请期待

更多功能正在开发中v9,敬请期待🙌

其他变化

  • 利用 CI 和 npm增强安全性 --provenance,实现更安全的发布。
  • 新增**$XDG_CONFIG_HOME** 支持。迁移~/.huskyrc~/.config/husky/init.sh集中式配置。
  • 修复了 Windows 创建的钩子的权限问题;它们不再需要是可执行的。
  • 已移除husky install。请使用huskyhusky some/dir实现相同功能(将添加弃用通知)。
  • 修改了缺少该参数时的行为.git;现在会触发警告而不是失败。
  • 已替换HUSKY_DEBUG=1HUSKY=2用于调试。
  • 更新了 Husky API 的模块使用方法。
  • 已过渡到ESM模块使用。
  • 已停止支持 Node 14 和 16。
  • 文档已更新。

如何迁移

v9向后兼容v8,允许您以后自由升级和迁移您的钩子。

以下是迁移步骤:

package.json

复制代码
{
  "scripts": {
-   "prepare": "husky install"
+   "prepare": "husky"
  }
}

.husky/pre-commit

复制代码
- #!/usr/bin/env sh
- . "$(dirname -- "$0")/_/husky.sh"
npm test 

注意:sh即使设置了 shebang,也会用于运行 hooks。

如果您是将其husky作为模块使用:

复制代码
- const husky = require('husky')
- // ...
+ import husky from 'husky'
+ console.log(husky())
相关推荐
CDwenhuohuo几秒前
前端文件预览
开发语言·前端·javascript
008爬虫实战录17 分钟前
【最新猿人学】 验证码 - 图文点选 文字验证码识别
前端·javascript
一叶飘零晋39 分钟前
【(一)Electron 使用之如何用vite+vue3搭建初始框架】
前端·javascript·electron
恶猫2 小时前
网页自动化模拟操作时,模拟真实按键触发事件【终级方案】
前端·javascript·自动化·vue·网页模拟
ZC跨境爬虫2 小时前
跟着 MDN 学 HTML day_2:(表单分组与高级输入控件实战)
前端·javascript·css·ui·html
千寻girling3 小时前
滑动窗口刷了快一个月(26天)了 , 还没有刷完. | 含(操作系统学什么的Java 后端)
java·开发语言·javascript·c++·人工智能·后端·python
一袋米扛几楼983 小时前
【报错问题】彻底解决 TypeScript 报错 TS2769: No overload matches this call (JWT 篇)
linux·javascript·typescript
牧码岛4 小时前
Web前端之JavaScrip中的Array、Object、Map和Set详解
前端·javascript·web·web前端
533_4 小时前
[pinia] vue3中监听pinia值的变化
前端·javascript·vue.js
AlenLi4 小时前
JavaScript - 相对实用的Axios二次封装
前端·javascript