gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 06:08:44 33 4
gpt4 key购买 nike

如何让 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

我想优雅地退出进程。

有什么想法吗?

最佳答案

阻止安装节点包的最佳实践是从预安装脚本返回非零退出代码。

您仍然会收到一堆 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 的部分。

关于javascript - npm install(在预安装时优雅地停止进程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65058817/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com