# 一、npx 作用
# 1. 免安装全局命令
不用全局安装,直接在命令行执行一次性命令
有很多命令,我们只需要执行一次的,但是却要全局安装。使用npx
,可以在不全局安装依赖包的情况下,运行命令,而且运行后不会污染全局环境。
npx create-react-app my-react-app
npx
将create-react-app
下载到一个临时目录,使用以后再删除。每次运行这个命令,都会重新下载依赖包,运行后删除。
如果频繁使用create-react-app
这个命令的话,其实全局安装更好,因为每次安装都会耗时间。
# 2. 本地 bin 寻址
就是在命令行执行本地已安装的依赖包命令。
比如我们在一个目录下安装了mocha
npm install -D mocha
可以这样使用它:
npx mocha --version
也可以写到package.json
的scripts
中,缺点是很麻烦。
//package.json
"scripts": {
"findmocha": "mocha --version",
}
# 二、npx 原理
npx
的原理,就是在运行它时,执行下列流程:
- 去
node_modules/.bin
路径检查npx
后的命令是否存在,找到之后执行; - 找不到,就去环境变量
$PATH
里面,检查npx
后的命令是否存在,找到之后执行; - 还是找不到,自动下载一个临时的依赖包最新版本在一个临时目录,然后再运行命令,运行完之后删除,不污染全局环境。