安装

npm 从5.2版开始,增加了 npx 命令。
Node 自带 npm 模块,所以可以直接使用 npx 命令。万一不能用,就要手动安装一下。

  1. $ npm install -g npx

主要使用场景

调用项目安装的模块

npx 想要解决的主要问题,就是调用项目内部安装的模块。
我们在项目下安装的cli一般只能在package.json的scripts字段中调用,或者是在项目脚本中调用。

  1. {
  2. // ...
  3. "scripts": {
  4. "creatApp": "create-react-app xxx"
  5. }
  6. }

如果想在命令行中去调用:

  1. node-modules/.bin/xxx --version

有了npx,我们调用内部模块就变得简单了:

  1. npx xxx --version

它的原理是在运行的时候到node_modules/.bin路径和环境变量$PATH里面,检查命令是否存在。

避免全局安装模块

使用create-react-app之前,我们需要把它安装到全局。
有了npx,可以不用全局安装,直接使用

  1. $ npx create-react-app myApp

允许指定版本

  1. $ npx uglify-js@3.1.0 main.js -o ./dist/main.js

上面代码运行时,npx如果在本地没有发现create-react-app,会将其下载到一个临时目录,使用以后再删除。所以,以后再次执行上面的命令,会重新下载create-react-app。

—no-install 参数和—ignore-existing 参数

—no-install,强制使用本地模块,不下载远程模块,如果没有本地模块,会报错。

  1. $ npx --no-install http-server

如果忽略本地的同名模块,强制安装使用远程模块,可以使用—ignore-existing参数

  1. $ npx --ignore-existing create-react-app myApp

使用不同版本的node

利用 npx 可以下载模块这个特点,可以指定某个版本的 Node 运行脚本。

  1. $ npx node@0.12.8 -v
  2. v0.12.8

原理是从 npm 下载这个版本的 node,使用后再删掉。
某些场景下,这个方法用来切换 Node 版本,要比 nvm 那样的版本管理器方便一些。