"npm publish" 尽管在测试脚本中抛出错误,但仍未阻止
"npm publish" not prevented despite errors being thrown in test script
如果我没记错的话,使用测试脚本的一个很好的理由是防止发布错误代码。所以我写了自己的测试脚本,如果其中一个测试用例失败,它会抛出一个错误。
// index.test.js
if (!testCase) {
throw new Error("Error detected, publishing process supposed to be canceled!");
}
// package.json
"scripts": {
"test": "node index.test.js",
"prepublishOnly": "npm test"
},
现在,当我 运行 npm publish
我的测试脚本按预期执行时,会抛出一个错误,但我的 npm 包仍然会发布。
我认为使用 Mocha 或 Jest 等测试框架可能会解决问题,但我更愿意直接使用 node.js!
谢谢你的评论@tkausl!
I'd assume, even though an exception is thrown, the node process doesn't exit with an error code, which makes npm think everything went well. You need to make sure to exit with an error code. –
用process.exit(1)
代替throw new Error()
确实解决了问题!
如果我没记错的话,使用测试脚本的一个很好的理由是防止发布错误代码。所以我写了自己的测试脚本,如果其中一个测试用例失败,它会抛出一个错误。
// index.test.js
if (!testCase) {
throw new Error("Error detected, publishing process supposed to be canceled!");
}
// package.json
"scripts": {
"test": "node index.test.js",
"prepublishOnly": "npm test"
},
现在,当我 运行 npm publish
我的测试脚本按预期执行时,会抛出一个错误,但我的 npm 包仍然会发布。
我认为使用 Mocha 或 Jest 等测试框架可能会解决问题,但我更愿意直接使用 node.js!
谢谢你的评论@tkausl!
I'd assume, even though an exception is thrown, the node process doesn't exit with an error code, which makes npm think everything went well. You need to make sure to exit with an error code. –
用process.exit(1)
代替throw new Error()
确实解决了问题!