原文地址: https://monster1935.com/2019/12/23/what-is-npx/
今天在看到 create-react-app
仓库时,在其安装方式上看到这样一条指令,一脸懵逼,这是什么?javascript
npx create-react-app my-app cd my-app npm start
nvm
、 nrm
、 npm
、npx
, 相似的名词家常便饭,npx
究竟是什么?html
照例来到 github, 如其官方仓库的解释:java
npm package executor
这是 npm 的包执行器,那么问题来了,这是何时出现的一个这样的工具,以前一直没用这个工具岂不也是好好的?node
查阅资料得知,npx 是 npm v5.2.0 版本以后一块儿打包的安装的一个包执行器,在没有这个包执行器以前,咱们如何执行一个 npm 包的指令,首先咱们要搞懂执行一个已安装的npm包的指令的过程。react
npm intall ***
指令后,在当前执行路径下的 node_module 文件夹下会默认添加该 npm 包对应的文件夹,并在 .bin 文件夹下生成对应的二进制执行指令执行一个 npm 包就有两种方式:webpack
node_modules/.bin/webpack
有了 npx 之后,咱们就能够直接使用 npx 命令去执行了,去寻找二进制命令文件的重任就交给了它,好比 npx webpack
, 不再用去写 node_modules/.bin/***
git
如上介绍了 npx 执行指令对于咱们来讲一个显而易见的用处,那么除此以外,npx 还有一个用途就是没必要全局安装一些 npm 包,直接使用 npx 命令去执行一些 npm 指令,若是本地没有安装的话会直接拉取最新的版本安装并执行。 那么 npx 的执行是一个什么样的过程:github
注意:第一步中检查本地是否安装,npx 会去 node_modules/.bin
以及 $PATH
下需寻找该 package 对应的指令是否被安装。web
下面是 npx 的一些高级用法,平常开发场景下不知道会不会用到这样的定制方式。npm
--no-install
, 本地未安装时报错--ignore-existing
-p
, 指定多个模块的时候使用-c
, 指定多个模块执行时使用package.json
和入口脚本)