使npx以静默方式安装最新的软件包版本,而不提示用户输入

vjrehmav  于 2021-09-23  发布在  Java
关注(0)|答案(1)|浏览(248)

概要

当我使用 npx create-next-app@latest ,系统会提示我安装更新的软件包版本。我在上找不到参数 npx 使命令在脚本内以静默方式工作。
例如,我希望找到一个参数,如 --silent--force--yes ,这是其他包管理器的常见约定。
必须有一个简单的答案,但我真的找不到。
仅供参考,我在windows 10上使用powershell作为shell环境,尽管我希望 npx 命令提供参数,而不必使用壳特征(管道)来完成此操作。

PS C:\git\myapp> npx create-next-app@latest
Need to install the following packages:
  create-next-app@latest
Ok to proceed? (y)

这个 npx --help 命令不会产生任何指导。

PS > npx --help
npm exec

Run a command from a local or remote npm package

Usage:
npm exec -- <pkg>[@<version>] [args...]
npm exec --package=<pkg>[@<version>] -- <cmd> [args...]
npm exec -c '<cmd> [args...]'
npm exec --package=foo -c '<cmd> [args...]'

Options:
[--package <pkg>[@<version>] [--package <pkg>[@<version>] ...]]
[-c|--call <call>]
[-w|--workspace <workspace-name> [-w|--workspace <workspace-name> ...]]
[-ws|--workspaces]

alias: x

Run "npm help exec" for more info

实际结果

npx暂停执行,直到提供用户输入。

预期结果

npx自动安装最新版本的软件包并执行它,而不提示用户。

l7mqbcuq

l7mqbcuq1#

这似乎是一个bug。根据在线文档 --yes 参数在上受支持 npm exec (又名。 npx ). 然而,在版本上 7.19.1 属于 npm ,指定 --yes 选项被cli忽略。
要重现此问题,请使用docker cli和bash shell运行新的node.js容器:

docker run --rm --interactive --tty node:16.5.0 bash

然后,在容器内运行以下命令:

npm install --global create-next-app@10.0.9
npx create-next-app@latest --yes

以下是来自 16.5.0 容器图像:

{
  npm: '7.19.1',
  node: '16.5.0',
  v8: '9.1.269.38-node.20',
  uv: '1.41.0',
  zlib: '1.2.11',
  brotli: '1.0.9',
  ares: '1.17.1',
  modules: '93',
  nghttp2: '1.42.0',
  napi: '8',
  llhttp: '6.0.2',
  openssl: '1.1.1k+quic',
  cldr: '39.0',
  icu: '69.1',
  tz: '2021a',
  unicode: '13.0',
  ngtcp2: '0.1.0-DEV',
  nghttp3: '0.1.0-DEV'
}

相关问题