npx(翻译)

643 阅读2分钟

原文:www.npmjs.com/package/npx

npx(1)--执行npm包二进制文件

简介

npx [options] <command>[@version] [command-arg]...

npx [options] [-p|--package <pkg>]... <command> [command-arg]...

npx [options] -c '<command-string>'

npx --shell-auto-fallback [shell]

安装

npm install -g npx

描述

从本地node_modules/.bin或缓存中心执行<command>,安装运行<command>所需的任何包。

默认情况下,npx将检查<command>是否存在于$PATH或本地项目二进制文件中,并执行它。如果找不到,将在执行之前安装它。

除非指定了--package选项,否则npx将根据提供的说明符猜测要调用的二进制文件的名称。npm理解的所有包说明符都可以与npx一起使用,包括git说明符、远程tarball、本地目录或作用域包。

如果包含完整的说明符,或者使用--package,npx将始终使用新安装的包的临时版本。也可以使用--ignore-existing标志强制执行此操作。

  • -p、 --package <package>-定义要安装的包。默认值为<command>。如果要调用其他可执行文件之一,或者二进制名称与包名称不匹配,则只需要对具有多个二进制文件的包执行此操作。如果提供了此选项,<command>将按原样执行,如果存在@version,则不解释。可以提供多个--package选项,并且将安装指定的所有包。

  • --no-install-如果传递给npx,它只会在当前路径或$prefix/node_modules/.bin中运行<command>。它不会尝试安装丢失的命令。

  • --cache <path>设置npm缓存的位置。默认为npm自己的缓存设置。

  • --userconfig<path>-要传递给npm的用户配置文件的路径。默认为npm当前的默认值。

  • -c <string>-在npm run-script中执行<string>,像在shell环境中,所有常用的环境变量都可用。只有<string>中的第一项将自动用作<command>。其他人必须使用-p。

  • --shell <string>调用命令的shell(如果有)。

  • --shell-auto-fallback [<shell>]—生成shell代码,用一个调用npx的处理程序覆盖shell的“command not found”。尝试找出您的shell,或者您可以将其名称(bash、fish或zsh)作为选项传递。请参见下面的安装方法。

  • --ignore-existing-如果设置了此标志,npx在决定是否安装之前,不会在$PATHnode_modules/.bin中查找现有版本。这些路径中的二进制文件仍然可以执行,但将被此安装所请求的任何包所隐藏。

  • -q, --quiet-禁止npx本身的任何输出(进度条、错误消息、安装报告)。子命令输出本身不会被静音。

  • -n, --node-arg-当二进制为node脚本时提供给node的额外节点参数。可以多次提供此选项以添加更多参数。

  • -v, --version-显示当前npx版本。

示例

运行项目本地bin

$ npm i -D webpack
$ npx webpack ...

无需本地安装的一次性调用

$ npm rm webpack
$ npx webpack -- ...
$ cat package.json
...webpack not in "devDependencies"...

从github存储库调用命令

$ npx github:piuccio/cowsay
...or...
$ npx git+ssh://my.hosted.git:cowsay.git#semver:^1
...etc...

使用一个npx调用和多个包执行完整的shell命令

$ npx -p lolcatjs -p cowsay -c \
  'echo "$npm_package_name@$npm_package_version" | cowsay | lolcatjs'
...

使用--inspect运行node二进制文件

$ npx --node-arg=--inspect cowsay
Debugger listening on ws://127.0.0.1:9229/....

指定一个node版本来运行npm脚本(或其他任何东西!)

npx -p node@8 npm run build

SHELL AUTO FALLBACK

当您在命令行中键入带有@的内容,但找不到该命令时,可以将npx配置为默认的回退命令运行。这包括安装在本地前缀中找不到的包。

例如:

$ npm@4 --version
(stderr) npm@4 not found. Trying with npx...
4.6.1
$ asdfasdfasf
zsh: command not found: asfdasdfasdf

目前支持zshbash(>=4)fish。您可以使用npx --shell-auto-fallback <shell>访问这些完成脚本。

要永久安装,请将下面的相关行添加到~/.bashrc~/.zshrc~/.config/fish/config.fish,或根据需要。要只为shell会话安装,只需运行。

您可以选择在生成回退时传递--no-install,以防止它在缺少命令时安装包。

For bash@>=4:

$ source <(npx --shell-auto-fallback bash)

For zsh:

$ source <(npx --shell-auto-fallback zsh)

For fish:

$ source (npx --shell-auto-fallback fish | psub)