如何禁用纱线交互提示以进行纱线升级

时间:2019-01-18 15:58:30

标签: node.js bash yarnpkg

我正在将yarn upgrade命令添加到bash文件中。 我想运行命令以将特定的软件包升级到特定的版本。

yarn upgrade mypackage@5.9.5

但是,如果在远程npm存储库中找不到特定版本,那么yarn会打开一个提示,提示您从可用版本中进行选择,例如:

Couldn't find any versions for "mypackage" that matches "5.9.5"
Please choose a version of "mypackage" from this list: (Use arrow keys)

这在bash文件中无法正常工作。我需要的是一个简单的错误,即找不到包,并且退出代码为非0。

有可能这样做吗? 纱线中是否有一个选项可以禁用此交互式选择器,或者有一个bash技巧可以禁用此交互并变成简单的退出代码?

2 个答案:

答案 0 :(得分:0)

yarn upgrade--non-interactive标志一起使用。如果失败,您将获得一个非零的退出代码

$ yarn upgrade webpack-merge@4.2.29 --non-interactive
yarn upgrade v1.13.0
[1/5]   Validating package.json...
[2/5]   Resolving packages...
error Couldn't find any versions for "webpack-merge" that matches "4.2.29"
info Visit https://yarnpkg.com/en/docs/cli/upgrade for documentation about this command.
$ echo $?
1

答案 1 :(得分:0)

如果您使用的是 unix,您可以使用命令 yes 将一个空字符串通过管道传递给所有内容,并且它的行为就像它对列表进行了第一个选择,即

默认情况下,是的,会发出一个 y 字符的流,但是如果你给它一个参数,它会一遍又一遍地将该流发送到标准输出。所以在这种情况下,你将使用:

yes " " | yarn upgrade webpack-merge@4.2.29

--non-interactive 会失败,您可能(或可能)不希望那样。