美文网首页
husky 7.x 使用

husky 7.x 使用

作者: 前端小白的摸爬滚打 | 来源:发表于2021-12-28 09:02 被阅读0次

    我为什么想用 husky?

    我想再提交代码的时候将我项目的一个文件拷贝一份然后一起提交,所以我需要在 commit 之前执行该操作,然后将拷贝后的文件也一起git add到我的项目中,然后一起 commit,那么什么东西是可以监听到我的 commit 操作的呢?并且还可以在 commit 之前先执行一些自定义的操作?然后我的脑子里就闪现了 husky 这个工具 🐶

    husky 是什么?

    Husky 是一种工具:让我们可以轻松地接入 Git hooks ,并在我们需要的某些阶段运行脚本。

    git hooks 又是什么?

    Git hooks 是可以设置在 Git 生命周期的在某些事件下运行的脚本。 这些事件包括提交的不同阶段,例如在提交之前(pre-commit,提交之后(post-commit)。

    这些功能非常有用,因为它们允许开发人员运行自定义代码任务,甚至运行其他自动化脚本来执行合适的代码规范及标准。

    那么怎么用?

    husky 7 的初始化推荐用他们官方提供的姿势,放到 prepare scripts 中。

    安装

    yarn add husky -D
    

    修改 package.json

    {
      "script": {
        "prepare": "husky install",
        "cp": "node cp.js"
      }
    }
    

    执行一下 prepare 脚本

    npm run prepare
    

    添加 hook

    npx husky add .husky/pre-commit "npm run cp && git add ."
    

    注意:我这里用的是 && 而不是 &,因为我发现我使用 & 的时候 cp.js 脚本执行完毕之后我的终端并不会退出 🤦♀️

    执行 git 操作

    git add .husky/pre-commit
    git commit -m 'ADD: husky pre-commit hook'
    

    效果

    执行了我的cp.js文件(这个文件里面的代码就是实现我前面所说的复制文件的功能)并且将新生成的 copy 后的新文件也 add 进来一起提交。

    注意 ⚠️:如果这里没有执行git add .则每次执行完cp.js后修改的文件都不会被提交进来,导致我们每次提交完代码之后都有一个修改的文件还在工作区,但是这不是我想要的。我希望的是:执行完cp.js脚本后生成/修改的文件都可以算在本次提交内一起提交,所以我需要在我的pre-commit的 hooks 里面&& git add .这样在执行git commit的时候就可以一起提交了 ✌️

    相关文章

      网友评论

          本文标题:husky 7.x 使用

          本文链接:https://www.haomeiwen.com/subject/eqtpqrtx.html