What
提交代码 (commit) 或者推送代码 (push) 到 git 仓库前,检查代码是否符合规范,若检查不通过,则不予提交。
Why
- 确保团队代码一致性,便于维护和理解。
- 发现潜在的错误,例如分号、引用错误等。
How
以检查 Markdown 文档为示范,用到的工具有:
- typicode/husky:Git hooks made easy
- hustcc/lint-md:Markdown lint
- mysticatea/npm-run-all:Run multiple npm-scripts
例子
项目结构
.
├── package.json
├── src
│ └── doc.md
└── yarn.lock
package.json
{
"name": "my-doc",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "npm run lint",
"lint": "run-s lint-md",
"lint:fix": "run-s lint-md:fix",
"lint-md": "lint-md ./src",
"lint-md:fix": "lint-md --fix ./src"
},
"keywords": [],
"author": "",
"license": "ISC",
"husky": {
"hooks": {
"pre-commit": "npm test",
"pre-push": "npm test"
}
},
"devDependencies": {
"husky": "^3.1.0",
"lint-md-cli": "^0.1.1",
"npm-run-all": "^4.1.5"
}
}
解释:
- commit/push 前执行
npm run test
lint
检查器会批量执行多项检查:检查 markdown、js、ts (如果需要)lint:fix
检查器批量修复- 其它针对特定模块的检查器可以这样写
lint-xx
然后使用lint
批量去执行 lint
是自动的,fix
是手动的