Press "Enter" to skip to content

(转)在 pre-commit 的钩子中运行 npm script

原文:https://www.zcfy.cc/article/633

如果你的团队和我工作的团队一样,每个人都有自己喜欢的 IDE(比如: Sublime Text, Atom, WebStorm, Vim, Visual Studio Code 等), 虽然他们大多都集成了校验功能,但是还是不能保证在 Pull Request 之前解决所有的校验问题。

因此,我们已经开始使用 node 模块的 pre-commit 去解决这个问题 —— 更加方便简单的在 git 仓库 commit 之前去执行校验。

  • 安装
npm install pre-commit --save-dev
  • package.json

如果你已经安装了 pre-commit, 那你就需要在你的 package.json 里面添加一个新的 pre-commit 的入口, 来表示在 commit 之前要执行的校验规则。

{
  "scripts": {
    "lint": "eslint ./ --cache --ignore-pattern .gitignore"
  },
  "pre-commit": [ "lint" ],
  "devDependencies": {
    "eslint": "^2.12.0",
    "pre-commit": "^1.1.3"
  }
}

别担心,即使你的 pre-commit 钩子没有执行成功, 你还是可以在 commit 的后面加上 –no-verify 的参数来强制提交。

  • Pre-commit 信息

我发现, 最好是 pre-commit 的脚本前面加上一个发生了什么事情的描述,这样就不会造成信息的混乱了。不然的话,你可能会认为是自己错用了 git 或者发生了其他什么不可描述的事情。

{
  "scripts": {
    "lint": "eslint ./ --cache --ignore-pattern .gitignore",
    "precommit-msg": "echo 'Pre-commit checks...' && exit 0"
  },
  "pre-commit": [ "precommit-msg", "lint" ],
  "devDependencies": {
    "eslint": "^2.12.0",
    "pre-commit": "^1.1.3"
  }
}
  • 其他建议

你可以在 pre-commit 里面添加其他的脚本,比如单元测试(ava, mocha, jasmine……) 或者覆盖度测试(nyc, istanbul……)。 当然,在 pre-commit 的钩子里面添加的脚本越多,你的代码等待 commit 的时间也就越长。

  • 结论

添加 pre-commit 可以帮助你的项目增强一致性和代码质量。 除了代码校验和单元测试之外,你有没有发现更多的使用实例呢? 如果有的话,我很想听听你的声音。 你可以在 twitter at [@elijahmanor] 上找到我。

    发表回复

    您的电子邮箱地址不会被公开。 必填项已用*标注