npx 是否不再进行免安装 运行?

Does npx no longer do install-less run?

来自nodejs.dev site

npx allows you to run that npm command without installing it first. If the command isn't found, npx will install it into a central cache:

他们以此为例:

npx cowsay "Hello"

但是当我 运行 时:

$ npx cowsay "Hello"

Need to install the following packages:
  cowsay
Ok to proceed? (y)

嗯?我现在需要设置一些偏好吗?我习惯于 npx 运行 在不安装的情况下安装东西,就像他们在 nodejs.dev 上说的那样。我真的不想在我的全局变量中安装 cowsay

Node v14.17.5
NPM 7.21.0
OS:ProductName: Mac OS X
ProductVersion: 10.15.7

在此处作为问题提交:https://github.com/nodejs/nodejs.org/issues/4104

编辑:刚刚在 NPM 6 中对此进行了测试,它按预期工作。这可能是 NPM post v6.

中的更改
✗ npm --version
6.14.16

✗ npx cowsay "Hello"

npx: installed 41 in 7.509s
 _______
< Hello >
...

如果您不愿意每次安装时都输入'yes',您可以执行以下操作。

npm_config_yes=true npx cowsay "hello"

看到这个https://github.com/npm/cli/issues/2226

npx 也有一个 --yes 标志,你可以用来绕过提示:

npx --yes some-npm-package

如果您 运行 npx --help,则没有记录,但此标志的文档隐藏在 NPM website 上的命令“描述”中。

如果您需要拒绝提示,还有一个 --no 标志可用。

这似乎是 NPM 6 之后的更改。

$ nvm install 18
Downloading and installing node v18.0.0...
...

$ nvm use 18  # this was a fresh install 
Now using node v18.0.0 (npm v8.6.0)


$ npx cowsay "Node 18"
Need to install the following packages:
  cowsay
Ok to proceed? (y) y
 _________
< Node 18 >
 ---------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

$ nvm use 14
Now using node v14.19.1 (npm v6.14.16)

$ npm uninstall --global cowsay # in case I already had it installed
up to date in 0.037s

$ npx cowsay "Node 14"  # NOTE: no confirmation 
npx: installed 41 in 5.271s
 _________
< Node 14 >
 ---------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

注意:没有确认在 Node 14 中安装。

如果你想在 Node 7+ 中使用一个包而不确认安装,你需要添加确认标志。请参阅@Nitesh 的回答。