# 一、npx 作用

# 1. 免安装全局命令

不用全局安装,直接在命令行执行一次性命令

有很多命令,我们只需要执行一次的,但是却要全局安装。使用npx,可以在不全局安装依赖包的情况下,运行命令,而且运行后不会污染全局环境。

npx create-react-app my-react-app

npxcreate-react-app下载到一个临时目录,使用以后再删除。每次运行这个命令,都会重新下载依赖包,运行后删除。

如果频繁使用create-react-app这个命令的话,其实全局安装更好,因为每次安装都会耗时间。

# 2. 本地 bin 寻址

就是在命令行执行本地已安装的依赖包命令。

比如我们在一个目录下安装了mocha

npm install -D mocha

可以这样使用它:

npx mocha --version

也可以写到package.jsonscripts中,缺点是很麻烦。

//package.json
"scripts": {
  "findmocha": "mocha --version",
}

# 二、npx 原理

npx的原理,就是在运行它时,执行下列流程:

  • node_modules/.bin路径检查npx后的命令是否存在,找到之后执行;
  • 找不到,就去环境变量$PATH里面,检查npx后的命令是否存在,找到之后执行;
  • 还是找不到,自动下载一个临时的依赖包最新版本在一个临时目录,然后再运行命令,运行完之后删除,不污染全局环境。