npx
是一个工具,npm v5.2.0
引入的一条命令(npx
),一个npm
包执行器,指在提高从npm
注册表使用软件包时的体验。
使用npx
有如下好处:
1、可以直接执行npm包中的可执行文件
比如,项目内部安装了测试工具mocha
:
npm install -D mocha
一般来说,调用mocha
,只能在项目脚本和package.json
的script
字段里面,如果想在命令行下调用,必须像下面这样:
node-modules/.bin/mocha --version
这样使用比较麻烦,使用npx就简单多了:
npx mocha --version
npx
的原理很简单,就是运行的时候,会到node_modules/.bin
路径和环境变量$PATH
里面,检测命令是否存在,存在则执行,不存在则临时安装mocha
来执行。
2、避免全局安装模块
比如我们新建一个vue
项目时,需要先进行脚手架@vue-cli
的全局安装,然后再进行项目的新建,如下:
npm install -g @vue/cli
vue create my-app
全局包默认的安装路径为C:\Users\xxx\AppData\Roaming\npm
,安装成功后,我们可以在该目录下查看到安装的包。
使用npx可简化如下:
npx @vue/cli my-app
上面代码运行时,npx
将@vue/cli
下载到一个临时目录,使用以后再删除。所以,以后再次 执行上面的命令时,会重新下载@vue/cli
。
3、可以指定node
版本、命令的版本,解决了不同项目使用不同版本的命令的问题
相信小伙伴们都遇到过旧的项目用的是比较老的node
版本,如果新项目想用新的node
版本,则会存在不兼容的情况,可以通过安装nvm
来给本地安装多个node
包解决此问题。使用npx
也可解决该问题。
npx node@12.20.0 -v
4、执行GitHub
源码npx
还可以执行GitHub
上面的模块源码。需要注意的是,远程代码必须是一个模块,即必须包含package.json
和入口脚本。
参考文章
1、npm 和 npx 有什么区别?
2、npx 使用教程