npx的使用方法、场景
npx使用教程
今晚在学习Vue-Cli时, 由于突发奇想想试试最新的@4.x.x版本, 但是本地全局安装的脚手架版本是@2.x.x的, 因为不想污染全局于是就想到用npx命令, 一路上踩坑不断, 为了以后能够更好的使用npx并区分其跟npm的指令, 就有了本篇笔记
npm 是从5.2版开始, 增加(自带)了 npx 命令。 如果发现没安装请手动安装:
npm i -g npx
npm与npx的概念
- NPM(Node Package Manager) 是Node.js提供的一个包管理器, 可以使用 NPM 来安装 node.js 包
- NPX(Node Package Excuted) 可以理解为用于临时安装并执行某个包的一个工具
总结的来说:
- npm专注于安装包
- npx专注于执行包, 并且是较特殊的执行
npx的使用场景(对比npm的一些优势)
从几个使用场景出发, 希望能够有对应您当前的场景, 这样就能直接套用了
使用场景1: 想用项目中已经安装好的某个包, 但是不能直接执行(因为没有全局安装, 涉及环境变量的问题)
对于这个场景, 有些笨方法:
- 到项目的根目录下执行:
node-modules/.bin/包对应的脚本 - 配置
npm script: 在package.json的scripts中将方法1添加进脚本, 然后就能在需要的时候执行"npm run 自定义指令"以快速执行啦, 本质上只是对方法1的改进
更优雅的方法, 就是使用npx命令啦:
npx <包对应的命令>
# 以less编译为例:
npx lessc -v # 查看当前项目下less编译器的版本
使用场景2: 已全局安装某个包, 项目又已安装了不同版本的某个包, 想用项目的那个版本
以我今晚的踩坑作为第二个使用场景, 我本地已经全局安装了Vue脚手架的@2.x.x版本, 但是我想用并已经在本地项目文件目录中安装了最新的@4.x.x版本, 即:
# 已经执行过
npm i -g vue-cli@2
vue -V # vue@2.9.6
# 已经执行过
cd my-project
npm i -D @vue/cli@4
vue -V # vue-cli@4.5.13
这时, 如果使用vue -V会发现使用的是全局的版本, 因为npm默认会执行全局中的包。如果想使用项目已经安装的那个版本就直接执行如下命令:
npx <包对应的命令>
# 以vue-cli为例:
npx vue create my-project
使用场景3: 不想全局或在项目中安装某个包, 只想临时使用
对于这种场景, npx就是必要的选择。npx会将要用的下载到一个临时目录, 使用完毕后自动删除, 还是以Vue-Cli为例: 这次的我突发奇想想看看React脚手架的项目文件结构, 由于我还没学, 所以本地和全局都没有安装(只是临时想用脚手架创建一个React项目)
npx create-react-app my-react-project #react脚手架将会在项目搭建完后自动被删除掉
使用场景4: 临时使用特定版本的包(本地没有安装)
如题所示, 这里以我突发奇想想使用Vue脚手架的@3.x.x版本, 但是我全局已经安装了@2.x.x版本
cd my-vue-project # 进入我的vue项目
npx @vue/cli@3 create big-project # 利用vue-cli的3.x版本创建一个名为big-project的项目
关于npx的一些参数
- 安装并使用特定版本:
npx 包@版本号 包对应的命令 --no-install强制使用本地包, 本地包如果没安装就会报错:npx --no-install vue create my-project--ignore-existing强制安装使用远程模块:npx --ignore-existing vue create my-project-p对于一次性安装多个包,使用参数-p:npx -p @vue/cli -p less切记: 安装多个包一定要使用 -p-c在一次性安装并使用多个包的场景中: 在低版本下执行npx -p vue-cli -p less lessc -v & vue -V命令, 有可能只有第一个命令项能正常执行, 即:只打印出less编辑器的版本。npx的参数-c就是为了告诉npx执行指定的所有命令的范围:npx -p vue-cli -p less -c "lessc -v & vue -V", 这样就能保证绝对的安全了。 注: &代表两个命令都执行, |代表前面执行成功后面命令就不执行
这一小节中最常用、重要的是第5点, 根据此总结: 不管安装的包、命令的个数个数是多少(哪怕只安装1个包), 严格遵守npx -p 包1 -p 包2 -p 包n -c "命令1 & 命令2 & 命令n" 一定没错
写在最后
啰里啰嗦只为了更加详细的记录, 全文结束!
npx的使用方法、场景的更多相关文章
- 阿里云场景化阿里云企业数字化转型售前方法PSA
阿里云场景化阿里云企业数字化转型售前方法PSA 目录 01 课程收获 理解企业数字化转型的概念.内涵.本质 了解企业数字化转型的要点.目标和切入点 掌握数字化转型项目售前阶段实践方法 场景化方案 阿里 ...
- Unity 中场景切换
Unity游戏开发中,单个Scene解决所有问题似乎不可能,那么多个Scene之间的切换是必然存在.如果仅仅是切换,似乎什么都好说,但是在场景比较大的时候不想让玩家等待加载或者说场景与场景之间想通过一 ...
- Cocos2d-x-lua游戏两个场景互相切换MainScene01切换到MainScene02
/* 场景一lua代码 */ require "MainScene02" local dic_size = CCDirector:sharedDirector():getWinSi ...
- iOS 多线程NSThread理解与场景示例
NSThread是相对GCD和NSOperationQuene而言,比较轻量级的一种多线程处理方式. 但同时,它的弊端就是需要自己管理线程的生命周期,以及线程同步:而另外两种不需要自己管理. 常见方法 ...
- 【机器学习实战】第7章 集成方法 ensemble method
第7章 集成方法 ensemble method 集成方法: ensemble method(元算法: meta algorithm) 概述 概念:是对其他算法进行组合的一种形式. 通俗来说: 当做重 ...
- Linux环境下Swap配置方法
Linux环境下Swap配置方法 场景: 今天下午安装一个CentOS6.5操作系统,忘记配置swap分区.看看如何安装系统之后,增加和删除swap分区.方法如下:1.内存占用情况[root@josh ...
- npx命令介绍
什么是npx 第一次看到npx命令是在 babel 的文档里 Note: If you do not have a package.json, create one before installing ...
- Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)
Python 在子类中调用父类方法详解(单继承.多层继承.多重继承) by:授客 QQ:1033553122 测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...
- npx 命令介绍
这个是在 npmv5.2.0引入的一条命令(查看),引入这个命令的目的是为了提升开发者使用包内提供的命令行工具的体验. 为什么引入这个命令 举个例子,我们开发中要运行 parcel 命令来打包:par ...
随机推荐
- Shiro-JWT SpringBoot前后端分离权限认证的一种思路
JWT-Shiro 整合 JWT-与Shiro整合进行授权认证的大致思路 图示 大致思路 将登录验证从shiro中分离,自己结合JWT实现 用户登陆后请求认证服务器进行密码等身份信息确认,确认成功后 ...
- ES6 数组的方法
数组的类 数组的类是Array 数组的定义 var arr=[元素] var arr=new Array(3) 数字3,代表有三个元素或者三个空位 如果数组定义采用 new 实例,类中跟的是一个数字 ...
- Elasticsearch查询文档总数
前言 在使用ES搜索的时候,或多或少都会面临查询数据总量的情况,下面介绍三种查询数据总量的方式. 其中,方案二解决了当结果数据总量超过1w时,由于ES默认设置(max_result_window:10 ...
- Nexus安装配置和使用
Nexus安装配置和使用 第一步安装jdk yum install java-1.8.0-openjdk-devel 第二步下载nexus-3.12.1-01-unix.tar.gzjdk 下载地址: ...
- SonarQube遇到的启动问题及解决方案
操作系统:centos 7 (x86)一.问题描述:使用root启动时,一直反馈 SonarQube is not running问题原因:不能够使用root用户进行启动解决方案:①创建一个其他用户( ...
- 3、mysql的多实例配置(3)
8.mysql多实例故障排错:
- keycloak~自定义SPI的注入与扩展
项目结构 自定义SPI注册 1. 直接复制文件方式 docker cp keycloak-service-self-spi.jar keycloak:/opt/ docker cp module-on ...
- kmp算法 汇总
来源:http://blog.csdn.net/qq_34494458/article/details/75253466 KMP算法,是由Knuth,Morris,Pratt共同提出的模式匹配算法,其 ...
- Raspberry Pi:树莓派安装基础系统 Raspberry Pi(树莓派系统)
准备材料 树莓派4B 树莓派系统镜像 SDFormatter (格式化工具) Win32DiskImager (镜像拷录工具) 镜像下载 Rspberry Pi (2020-08-24版本比较稳定) ...
- spring cloud服务器启动之后立刻通过zuul访问其中的实例报zuul连接超时的问题
spring cloud服务启动之后,立刻进行调用 报错:com.netflix.zuul.exception.ZuulException: Forwarding error Caused by: c ...