npx 不再进行无安装运行吗?

jco*_*lum 34 node.js npm npx

来自nodejs.dev 站点

\n
\n

npx 允许您运行该 npm 命令,而无需先安装它。如果未找到该命令,npx 会将其安装到中央缓存中:

\n
\n

他们以此为例:

\n
npx cowsay "Hello"\n
Run Code Online (Sandbox Code Playgroud)\n

但是当我运行时:

\n
$ npx cowsay "Hello"\n\nNeed to install the following packages:\n  cowsay\nOk to proceed? (y)\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
Node v14.17.5\nNPM 7.21.0\nOS:ProductName: Mac OS X\nProductVersion: 10.15.7\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

编辑:刚刚在 NPM 6 中测试了它,它按预期工作。这可能是 NPM v6 后的更改。

\n
\xe2\x9c\x97 npm --version\n6.14.16\n\n\xe2\x9c\x97 npx cowsay "Hello"\n\nnpx: installed 41 in 7.509s\n _______\n< Hello >\n...\n
Run Code Online (Sandbox Code Playgroud)\n

dot*_*ace 29

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

npm_config_yes=true npx cowsay "hello"
Run Code Online (Sandbox Code Playgroud)

请参阅此https://github.com/npm/cli/issues/2226

npx还有一个--yes可以用来绕过提示的标志:

npx --yes some-npm-package
Run Code Online (Sandbox Code Playgroud)

如果您运行,则该标志没有记录npx --help,但该标志的文档隐藏在NPM 网站上命令的“说明”中。

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

  • 您还可以使用“--yes”标志来代替。“版主”显然不喜欢将其作为答案发布,因此这里有一个链接:/sf/answers/4952007861/ (8认同)

jco*_*lum 3

这似乎是 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 |
                ||     ||

Run Code Online (Sandbox Code Playgroud)

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

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