关于让项目都挂上钩子(经验证,最新版本的Husky,使用这样的配置实际上是不生效的)

husky 6.0 实测不生效。1.3.1下述配置使用正常。

  1. {
  2. "name": "xxxx",
  3. "version": "1.0.0",
  4. "description": "",
  5. "main": "index.js",
  6. "dependencies": {
  7. "cz-conventional-changelog": "^3.3.0",
  8. "husky": "^1.3.1",
  9. "validate-commit-msg": "^2.14.0"
  10. },
  11. "devDependencies": {},
  12. "scripts": {
  13. "test": "echo \"Error: no test specified\" && exit 1",
  14. "commitmsg": "validate-commit-msg"
  15. },
  16. "husky": {
  17. "hooks": {
  18. "commit-msg": "validate-commit-msg"
  19. }
  20. },
  21. "config": {
  22. "commitizen": {
  23. "path": "./node_modules/cz-conventional-changelog"
  24. }
  25. },
  26. "keywords": [],
  27. "author": "",
  28. "license": "ISC"
  29. }

通过安装 cz + 配置 config => 实现 git cz 的激活

这也是以下配置的作用

  1. "cz-conventional-changelog": "^3.3.0",
  1. "config": {
  2. "commitizen": {
  3. "path": "./node_modules/cz-conventional-changelog"
  4. }
  5. },

Husky版本问题解决

https://blog.csdn.net/github_39553323/article/details/115312884
image.png
https://zhuanlan.zhihu.com/p/356924268(解释了原理,很清晰)
image.png

那么,我们来实现一个最新版本 Husky 的钩子

学到了什么

package.json 的一些默认约定

  • scripts 里面的 ‘prepare’ 会在 npm install 的时候,自动执行——【所以在这里挂在 husky install,就能够帮我们在初始化项目的时候,创建 huksy 目录
  • 顺带回忆起——如commonJS的默认约定,会从 main 指向的 js 开始寻找
    1. {
    2. "main": "self.js"
    3. }