【发布时间】:2021-07-07 10:53:20
【问题描述】:
我正在开发一个项目,我希望每次尝试提交新更改时,都会运行我的测试,并据此决定提交是否会发生。为此,我进行了研究,发现我可以使用husky's pre-commit hook。
我首先在我的项目中安装了 husky
npm i husky --save-dev
在我的package.json 中安装了"husky": "^6.0.0"。
然后我按照教程在package.json中添加了以下对象
"husky": {
"hooks": {
"applypatch-msg": "echo \"[Husky] applypatch-msg\"",
"pre-applypatch": "echo \"[Husky] pre-applypatch\"",
"post-applypatch": "echo \"[Husky] post-applypatch\"",
"pre-commit": "echo \"[Husky] pre-commit\""
}
}
如您所见,运行 git commit -m "some message!" 应该回显一堆东西,这意味着 husky 的预提交挂钩正在工作,但没有任何类似的东西得到回显。现在我只是不知道为什么这不起作用。如果它成功了,我会继续在 pre-commit 挂钩中添加脚本来运行我的测试。
顺便说一下,这里是package.json文件:
{
"name": "test app",
"version": "1.0.1",
"description": "test app",
"main": "index.js",
"scripts": {
"start": "node index.js",
"dev": nodemon index.js",
"test": "find ./plugins -name '*test.js' | xargs mocha -R spec"
},
"dependencies": {
"@hapi/boom": "^9.0.0",
"@hapi/glue": "^7.0.0",
"@hapi/good": "^9.0.0",
"@hapi/good-console": "^9.0.0",
"@hapi/good-squeeze": "^6.0.0",
"@hapi/hapi": "^19.1.1",
"@hapi/joi": "^17.1.1",
"axios": "^0.19.2",
"babel-eslint": "^10.1.0",
"base-64": "0.1.0",
"confit": "2.3.0",
"hapi-auth-jwt2": "^8.8.1",
"hapi-mongodb": "^9.0.0",
"jws": "4.0.0",
"mongodb": "^3.5.7",
"pad-left": "2.1.0",
"pino": "^5.16.0",
"query-string": "^6.13.1",
"redis": "^2.8.0",
"selectn": "^1.1.2",
"superagent": "3.8.2",
"utf8": "^3.0.0",
"uuid": "^3.4.0",
},
"devDependencies": {
"chai": "^4.1.2",
"chai-datetime": "^1.6.0",
"chai-http": "^4.0.0",
"husky": "^6.0.0",
"mocha": "^5.1.1",
"nodemon": "^2.0.4",
"proxyquire": "^2.0.1",
"sinon": "^5.0.10",
"sinon-test": "^2.2.0"
},
"husky": {
"hooks": {
"applypatch-msg": "echo \"[Husky] applypatch-msg\"",
"pre-applypatch": "echo \"[Husky] pre-applypatch\"",
"post-applypatch": "echo \"[Husky] post-applypatch\"",
"pre-commit": "echo \"[Husky] pre-commit\""
}
}
}
【问题讨论】:
-
好吧,我仍然无法让它工作,但我确实发现使用 husky v6,我们不再在 package.json 文件中添加这样的钩子了。然而,将 husky 降级到第 4 版也没有奏效。为什么?
-
我对赫斯基本身知之甚少,但是:这些不同的步骤中的哪一个在您的存储库中的
.git/hooks/中安装了文件?检查至少有一个可执行的 Git 钩子,例如,.git/hooks/pre-commit存在并且是可执行的。
标签: javascript git mocha.js husky