npx是npm5.2之后发布的一个命令,官网说它是“execute npm package binaries”,就是执行npm依赖包的二进制文件,简而言之,就是我们可以使用npx来执行各种命令。
npx官网:https://www.npmjs.com/package/npx
1、npx解决的问题
在命令行执行本地已安装的依赖包命令
使用npx可以在命令行直接执行本地已安装的依赖包命令,不用在scripts脚本写入命令,也不用麻烦的去找本地脚本。
首先看个场景
我们直接执行某个命令,什么都不做时是不能运行这个命令的,但是npx可以
![](https://img.haomeiwen.com/i9444961/0e0ee0d6b3d5dfeb.png)
2、npx的原理
npx的原理 ,就是在运行它时,执行下列流程:
1、 去node_modules/.bin路径检查npx后的命令是否存在,找到之后执行;
2、找不到,就去环境变量$PATH里面,检查npx后的命令是否存在,找到之后执行;
3、还是找不到,自动下载一个临时的依赖包最新版本在一个临时目录,然后再运行命令,运行完之后删除,不污染全局环境。
3、npm 与 npx的区别
参考:https://blog.csdn.net/weixin_44216637/article/details/130149760
https://blog.csdn.net/qq_45947664/article/details/127856736
分别举例说明
区别1.一个永久存在(npm),一个临时安装(npx),用完后删除
例子:用创建一个react项目的对比 npm创建
npm install -g create-react-app
create-react-app test-app
npx创建
npx create-react-app test-app
区别:npm他会在本地全局性的安装create-react-app,这个包会存储在node目录下面去。以后创建react项目直接执行create-react-app命令就可以了。
npx命令他会把create-react-app安装包临时安装上,等项目初始化完成以后,他就删除掉。
区别2.npx 会帮你执行依赖包里的二进制文件。
例子:执行webpack里面的文件 npm执行以下,结果是:6.9.0
npm i -D webpack ./node_modules/.bin/webpack -v
或者执行
npm i -D webpack`npm bin`/webpack -v
npx执行
npm i -D webpack
npx webpack -v
也就是说 npx 会自动查找当前依赖包中的可执行文件,如果找不到,就会去环境变量里面的 PATH 里找。如果依然找不到,就会帮你安装!
区别3.npx可以执行文件,但是npm不可以
npx 甚至支持运行远程仓库的可执行文件:
npx github:piuccio/cowsay hello
再比如 npx http-server 可以一句话帮你开启一个静态服务器!(第一次运行会稍微慢一些)npx http-server
指定node版本来运行npm scripts:
npx -p node@8 npm run build
主要特点:
1、临时安装可执行依赖包,不用全局安装,不用担心长期的污染。
2、可以执行依赖包中的命令,安装完成自动运行。
3、自动加载node_modules中依赖包,不用指定$PATH。
4、可以指定node版本、命令的版本,解决了不同项目使用不同版本的命令的问题
参考:https://www.jianshu.com/p/14c813bba544
网友评论