husky
在古代前端我的项目是必不可少的组件了,重构业务我的项目时依赖都降级到新版,发现 husky
还是在用低版本的,索性降级到最新的。
从 husky5
开始版本有了重大变动,旧的配置形式无奈间接应用,须要重新配置一下。
装置
npm install -D husky
检测提交 commit
提交记录是否符合规范须要 commitlint
npm install -D @commitlint/config-conventional @commitlint/cli
检测提交暂存区的代码是否合规须要 lint-staged
npm install -D lint-staged
配置
lint-staged
在 package.json
文件中增加相干配置
"lint-staged": {"*.{js,ts}": "eslint --fix"
}
commitlint
在我的项目下新建文件 commitlint.config.js
文件写入配置
module.exports = {extends: ["@commitlint/config-conventional"],
};
也能够增加自定义配置规定,相干文档 commitlint rules。
husky
下面曾经配置好了相干依赖,咱们须要应用 husky
将他们与实际操作关联起来。
网上及官网文档提供的命令无奈在我本机跑起来,有局部命令像是 husky add
只能应用 yarn
执行胜利,所以这里次要应用手动增加的形式阐明。
在 package.json
中增加新的 scripts
(对应命令:npm set-script prepare "husky install"
)
"scripts": {"prepare": "husky install"}
prepare
是NPM
操作生命周期中的一环,在执行install
的时候会按生命周期程序执行:preinstall -> install -> postinstall -> prepublish -> preprepare -> prepare -> postprepare
具体能够查看 npm scripts
执行 npm run prepare
,在我的项目下会生成一个 .husky
文件夹,用户能够在其中配置相干 git hooks
。
在 .husky
下增加一个文件,名称为相干 git hooks
的名称。
增加 pre-commit
文件,写入配置(对应命令:npx husky add .husky/pre-commit "npx lint-staged --allow-empty $1"
)
#!/bin/sh
. "$(dirname"$0")/_/husky.sh"
npx lint-staged --allow-empty $1
这样就与 lint-staged
关联起来了,在提交代码的时候就会按 lint-staged
配置去检测文件。
增加 commit-msg
文件,写入配置(对应命令:npx husky add .husky/commit-msg "npx commitlint --edit $1"
)
这样在提交时会查看 commit
信息是否合乎开发标准
git hooks
中,提交时的钩子有:pre-commit
提交之前执行(git commit --no-verify
能够跳过此阶段)->prepare-commit-msg
启动提交信息编辑之前 ->commit-msg
填写提交信息之后 ->post-commit
提交过程完结最初。相干文档 Git Hooks
测试
最初能够提交一个不标准的文件测试一下,看看配置的钩子是否有失常运行。
旧版降级
旧版的降级其实差不多,就是将 package.json
中的配置信息挪动到内部文件中,并且增加一个 NPM 的生命周期。husky
官网也有提供一个降级工具,能够试一试 husky-4-to-7