我正在将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技巧可以禁用此交互并变成简单的退出代码?
答案 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
会失败,您可能(或可能)不希望那样。