在一个新项目中,我运行:
npm install --save-dev husky
然后:
npx husky init
预期结果(根据文档@https://typicode.github.io/husky/get-started.html)
“init 命令简化了项目中 husky 的设置。它在 .husky/ 中创建预提交脚本,并更新 package.json 中的准备脚本。”
发生了什么: 控制台记录以下行,并且没有创建文件夹:
Usage:
husky install [dir] (default: .husky)
husky uninstall
husky set|add <file> [cmd]
接下来,根据上面的输出,我运行:
npx husky install
这会在我的项目根目录中安装一个 .husky 文件夹,其中包含一个 .gitignore 文件和一个“husky.sh”文件。 未创建预提交文件。
再次尝试运行:
npx husky init
之后,但这只是将相同的帮助文本记录到控制台。
在 .git/hooks 文件夹中,我看不到预提交文件(只有 pre-commit.sample)。
我的 package.json 文件中仍然有这个:
"lint-staged": {
"src/**/*.{js,jsx,ts,tsx}": [
"npm run tidy",
"npm run test"
]
}
在我的脚本下:
"pre-commit": "lint-staged"
但我想知道我是否真的还需要这些?当前的 Husky 文档中没有提及它们。 Husky 文档中实际上没有太多内容...
我在.husky目录中手动添加了一个预提交文件,其中包含以下命令:
npm run lint
它运行我的 eslint 脚本。但然后我收到以下错误:
error: cannot spawn .husky/pre-commit: No such file or directory
关于做什么或如何实际使用这个包有什么建议吗?
对于遇到此问题的其他人,请首先检查安装的 Husky 版本。所有文档都指向 v9,但在安装 Husky 时却安装了 v8。
您需要根据更改日志(https://github.com/typicode/husky/releases/tag/v9.0.1)使用husky@latest进行安装,不知何故(几乎一年后)还没有发现它尚未进入在线文档...