1 回答
TA贡献1951条经验 获得超3个赞
阻止安装节点包的最佳实践是从预安装脚本返回非零退出代码。
您仍然会收到一堆npm ERR消息,但它不会像process.kill您共享的选项那样终止 npm 进程,并且会获得正确的 npm 日志。
即,在 中preinstall.js,你可以有这样的东西:
if (someCondition) {
console.error('someCondition happened, aborting installation');
process.exit(1);
}
当someCondition遇到时,你会看到这样的东西:
$ npm install ~/src/untracked/mypkg/mypkg-1.0.0.tgz
> mypkg@1.0.0 preinstall C:\Users\allon\src\git\samplenode\node_modules\mypkg
> node preinstall
someCondition happened, aborting installation
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! mypkg@1.0.0 preinstall: `node preinstall`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the mypkg@1.0.0 preinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/users/mureinik/.npm-cache/_logs/2020-11-29T09_58_46_179Z-debug.log
编辑:
从答案正文中的评论中捕获讨论,因此更容易找到其他人是否遇到相同的问题。这里的目标是使特定包的安装失败,而不使整个npm install过程失败。此行为无法通过预安装脚本控制(该脚本只能控制其所属的包是否成功安装),但如果依赖项optionalDependencies在package.json.
添加回答
举报