【问题标题】:How to disable yarn interactive prompt for yarn upgrade如何禁用纱线升级的纱线交互提示
【发布时间】:2019-01-18 15:58:29
【问题描述】:

我正在将 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 技巧来禁用此交互并变成一个简单的退出代码?

【问题讨论】:

  • 您可以使用yarn upgrade mypackage@5.9.5 </dev/null 来试验 I/O 重定向。您还可以尝试查看 --non-interactive 标志是否恰好与 upgrade 一起使用,尽管它没有这样记录。

标签: node.js bash yarnpkg


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    yes " " | yarn upgrade webpack-merge@4.2.29

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

    【讨论】:

      猜你喜欢
      • 2019-08-03
      • 2021-11-09
      • 1970-01-01
      • 2018-08-21
      • 2019-11-13
      • 1970-01-01
      • 2018-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多