在我的软件开发生涯中,有一个话题让我越来越兴奋,那就是质量!在我的职业生涯中,我对质量的关注度越来越高。也许我已经被烧伤太多次了。唉,我决定测试使用husky 包将git钩子添加到一个React项目。我的目标是让它在提交代码或推送到git仓库之前,必须运行eslint linter和jest 测试套件。
从头开始设置
从零开始的设置是相当简单的。我首先用create-react-app 来启动。
create-react-app fun-with-git-hooks
cd fun-with-git-hooks
接下来,我安装了husky,它声称是 "git hooks made easy"。(准确地说!)。因为它只在开发环境中需要,所以只把它作为开发依赖项安装。
npm install husky --save-dev
实际上,我们最终需要一个额外的开发依赖,叫做cross-env ,它将允许我们在当前的任何环境中配置一个CI环境变量。
npm install cross-env --save-dev
最后,让我们对我们的package.json 文件做一些修改,以完成一些事情。
- 重新配置
jest测试,以便在持续集成模式下运行 - 添加一个提示命令(我们不必单独安装
eslint,因为它与create-react-app一起启动)。 - 配置我们的
husky钩子,首先进行刷新,然后进行测试
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "cross-env CI=true react-scripts test --env=jsdom",
"eject": "react-scripts eject",
"lint": "eslint src"
},
"husky": {
"hooks": {
"pre-commit": "npm run lint && npm test",
"pre-push": "npm run lint && npm test"
}
}
就这样了!现在,每当你试图提交或推送你的代码时,如果检查或测试失败,你将被阻止这样做。
质量的胜利!