1 npx 是什么
npx 是 npm v5.2.0 引入的命令,即 npm 自带的命令。
2 npx 有什么作用
通过 npx 我们可以直接执行依赖包里面的二进制文件,而无需给出依赖包路径,如:
1 | npx webpack --config webpack.prod.js |
没有 npx 时,当我们想在命令行直接使用依赖包时,需要给出依赖包的路径,如:
1 | .\node_modules\.bin\webpack --config webpack.prod.js |
3 npx 典型使用场景
3.1 一次性使用的命令
对于一些一次性命令,可以直接使用npx,如:
1 | npx create-react-app my-app |
指定模块运行版本,如下面命令指定 node 的 0.12.8 版本来运行命令 :
1 | npx node@0.12.8 -v |
4 npx 原理
npx 运行时,会从 node_modeule/.bin 路径和环境变量 $PATH 中,检测命令是否存在,当不存在时,会直接帮我们安装。
npx 甚至支持运行远程仓库的可执行文件,如:
1 | npx github:piuccio/cowsay hello |
再比如 npx http-server
可以一句话帮你开启一个静态服务器:
1 | npx http-server |
5 npx 高级用法
5.1 强制使用本地模块
使用 --no-install
参数,不下载远程模块, 强制使用本地模块,当本地不存在此模块时,会报错。
1 | npx --no-install http-server |
5.2 强制安装远程模块
使用 --ignore-existing
参数忽略本地同名模块,强制使用远程模块。
1 | npx --ignore-existing create-react-app my-react-app |
5.3 指定模块的安装版本
使用 -p
参数可以指定 npx 所要安装的模块。下面命令先安装 node ,再执行node -v
。
1 | npx -p node@0.12.8 node -v |
-p
参数还可以安装多个模块。
1 | npx -p lolcatjs -p cowsay [command] |
5.4 执行多条命令
如果 npx 安装多个模块,默认情况下,所执行的命令之中,只有第一个可执行项会使用 npx 安装的模块,后面的可执行项还是会交给 Shell 解释。
1 | npx -p lolcatjs -p cowsay 'cowsay hello | lolcatjs' |
-c
参数可以将所有命令都用 npx 解释。有了它,下面代码就可以正常执行了。
1 npx -p lolcatjs -p cowsay -c 'cowsay hello | lolcatjs'
参考: