当前位置:网站首页>npx 有什么作用跟意义?为什么要有 npx?什么场景使用?
npx 有什么作用跟意义?为什么要有 npx?什么场景使用?
2022-08-03 05:29:00 【卡尔特斯】
一、简介
npx是npm从v5.2.0开始新增了npx命令,>=该版本会自动安装npx,如果不能使用就手动安装一下:$ npm install -g npx
二、npx 的作用
npm只能管理包的依赖,npx则可以快捷的运用包中的命令行工具和其他可执行文件,让项目内部安装的模块用起来更方便。当执行
$ npx <command>相关命令的时候,npx会先本地找(可以是项目中的也可以是本机的)寻找这个command。找到了:就用本地的版本
没找到:直接下载最新版本(这里是在缓存里),完成命令要求
使用完之后就会完全清除,不会在本机或项目留下任何东西
这样就不会污染本机、永远使用最新版本的
dependency
三、npx 举例常见功能场景,每个案例都有一种常见的用处
案例一
npm是安装第三方包的,但是安装之后,如何快捷的使用这些包?比如,项目内部安装了测试工具webpack# 非全局安装 $ npm i webpack -D如果要执行
webpack的命令,要么直接运行下面的命令,要么只能在项目脚本的package.json中的scripts字段里面按下面这样配置一个新的命令:$ ./node_modules/.bin/webpack -v类似这样的用法就很不方便有时候一些一次性调试,这个使用可以使用
npx来做这件事,结果是一样的:$ npx webpack -v
案例二
另外,使用
npx可以避免全局安装模块,比如:create-react-app这个模块是全局安装,npx可以运行它,而且不进行全局安装。$ npx create-react-app my-react-app上面代码运行时,
npx将create-react-app下载到一个临时目录,使用以后再删除。所以以后再次执行上面的命令,会重新下载create-react-app提供使用后再移除。下载全局模块时,
npx允许指定版本:$ npx [email protected] ./src/index.js -o ./dist/main.js上面代码指定使用
v4.44.1版本的webpack进行打包操作。
案例三
注意:只要
npx后面的模块无法在本地发现,就会下载同名模块。比如:本地没有安装webpack-dev-server模块,下面的命令会自动下载该模块,在当前目录启动一个Webpack dev服务。npx webpack-dev-server如果想让
npx强制使用本地模块,不下载远程模块,可以使用--no-install参数,如果本地不存在该模块,就会报错:$ npx --no-install webpack-dev-server反过来,如果本地存在同名的模块,但是还是想使用远程的新版本模块,可以使用
--ignore-existing参数。比如:本地已经全局安装了create-react-app,但还是想使用远程模块,就用这个参数:$ npx --ignore-existing create-react-app my-react-app
案例四
利用
npx指定node版本运行脚本。$ npx [email protected] -v上面命令会使用
v14.15.0版本的node执行脚本。原理是从npm下载这个版本的node,使用后再删掉。在某些场景下,这个方法用来切换
node版本,要比nvm那样的版本管理器方便一些。
边栏推荐
猜你喜欢

Command errored out with exit status 1类似问题解决方案

prometheus 监控mysql数据库

【云原生 · Kubernetes】搭建Harbor仓库

PostMan测试接口-----上传文件、导出excel

TFS(Azure DevOps)禁止多人同时签出

【随笔】把喜欢的事情提上日程吧

SVN账号配置权限

WinServer2012r2破解多用户同时远程登录,并取消用户控制

MySQL之DQL——查询语言

【dllogger bug】AttributeError: module ‘dllogger‘ has no attribute ‘StdOutBackend‘
随机推荐
VB.net如何使用List类型
RADIUS计费认证如何配置?这篇文章一步一步教你完成
宝塔负载均衡配置及nfs共享
find命令、sort命令、uniq命令
你真的了解volatile关键字吗?
Prometheus monitors container, pod, email alerts
【DIoU CIoU】DIoU和CIoU损失函数理解及代码实现
Zabbix历史数据清理(保留以往每个项目每天一条数据)
MySQL的主从复制
mysql事务与多版本并发控制
在OracleLinux8.6的Zabbix6.0中监控Oracle11gR2
【IoU loss】IoU损失函数理解
ESXI主机给虚拟机添加USB加密狗设备
【面筋1】一些没什么标准答案的问题
PCB制造常用的13种测试方法,你了解几种?
零代码工具拖拽流程图
【multi_scale】多尺度训练——目标检测训练trick
prometheus 监控mysql数据库
什么是国密SSL协议?国密证书与传统SSL证书有什么区别?
一根网线完美解决IPTV+千兆网复用,还不来试试