为了账号安全,请及时绑定邮箱和手机立即绑定

npm install(在预安装时优雅地停止进程)

npm install(在预安装时优雅地停止进程)

慕的地8271018 2023-09-14 20:19:19
如何npm install在预安装脚本中(有条件地)停止?目前我有一个预安装脚本preinstall.js:if (someCondition) {   process.kill(process.ppid, 'SIGKILL'); }package.json:{  "scripts": {      "preinstall": "node preinstall"   } }然而这将导致:npm ERR! code ELIFECYCLE npm ERR! errno 1我想优雅地退出该过程。有任何想法吗?
查看完整描述

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.


查看完整回答
反对 回复 2023-09-14
  • 1 回答
  • 0 关注
  • 246 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信