pky*_*eck 6 javascript git pre-commit-hook node.js jestjs
我正在尝试用玩笑对预提交挂钩中的暂存文件运行测试。到现在为止还挺好。让它与pre-commit和lint-stagedNPM 包一起工作。
来自 package.json 的片段:
{
// ...
"scripts": {
"hook": "lint-staged",
// ...
},
"devDependencies": {
"eslint": "^4.12.1",
"eslint-config-airbnb-base": "^12.1.0",
"eslint-config-prettier": "^2.9.0",
"eslint-plugin-import": "^2.8.0",
"eslint-plugin-prettier": "^2.3.1",
"jest": "^22.0.3",
"jest-junit": "^3.4.0",
"lint-staged": "^6.0.1",
"pre-commit": "^1.2.2",
"prettier": "^1.9.1"
},
"jest": {
"collectCoverageFrom": ["src/**/*.js"],
"coveragePathIgnorePatterns": ["<rootDir>/src/models/"],
"coverageThreshold": {
"global": {
"branches": 80,
"functions": 80,
"lines": 80,
"statements": 80
}
}
},
"pre-commit": ["hook"],
"lint-staged": {
"*.js": ["eslint --fix", "git add", "jest --bail --passWithNoTests --coverage"]
},
// ...
}
Run Code Online (Sandbox Code Playgroud)
还有更多,但我认为这些是重要的部分。
我遇到的问题是,如果我暂存没有任何测试或被忽略的 b/c 文件"coveragePathIgnorePatterns": ["<rootDir>/src/models/"],jest 将退出1- 所以没有提交。通过添加--passWithNoTests. 伟大的。但现在我也想检查覆盖率 - 当没有测试(因此没有覆盖率数据)时,这也会失败:
----------|----------|----------|----------|----------|----------------|
File | % Stmts | % Branch | % Funcs | % Lines |Uncovered Lines |
----------|----------|----------|----------|----------|----------------|
All files | Unknown | Unknown | Unknown | Unknown | |
----------|----------|----------|----------|----------|----------------|
Jest: Coverage data for global was not found.
Run Code Online (Sandbox Code Playgroud)
是否有另一个标志我可以用来忽略覆盖范围(例如--passWithNoTests实际测试)?或者有人有更好的想法如何做到这一点?
或者我应该跳过这些预提交测试的覆盖范围吗?
您可以使用 husky 和 lint-staged 对其进行分解,如下所示:
"lint-staged": {
"src/**/*.(spec|test).ts": [
"npm run test"
],
"src/**/*.{ts,vue}": [
"eslint --fix",
"prettier --write"
]
},
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
Run Code Online (Sandbox Code Playgroud)
这样,如果测试目录中没有暂存文件,它只会跳过测试并转到下一个项目,eslint --fix即prettier --write
| 归档时间: |
|
| 查看次数: |
3051 次 |
| 最近记录: |