npm、nrm、nvm详解与应用

本文全面介绍了 npm、nrm 以及 nvm 这三个与 Node.js 开发密切相关的工具。首先,对 npm 进行了定义和功能解释,包括其在依赖管理、项目管理、脚本执行、版本控制和社区贡献等方面的作用。接着,详细介绍了 npm 的常用命令和设置下载源的操作,并解决了在安装依赖时可能遇到的 "certificate has expired" 问题。其次,介绍了 nrm 的用途、常用命令以及设置下载源的重要性,展示了 nrm 在管理 npm 源方面的便捷性。最后,针对多版本管理需求,详细解释了 nvm 的定义、用途、安装方法和常用命令,展示了通过 nvm 可以轻松管理不同 Node.js 版本,提高开发效率的优势。

一、npm(Node Package Manager)

1、什么是 npm ?

  npm 是 Node.js 的默认包管理工具,随同 Node.js 一起安装,它允许开发者安装、更新、卸载和共享 JavaScript 包和模块。npm 的起源可以追溯到 Node.js 的早期版本,随着 Node.js 的普及、JavaScript 生态系统的发展,npm 的功能和影响力不断增强,成为了 JavaScript 生态系统中不可或缺的一部分。

2、npm 的用途

  • 依赖管理:npm允许开发者轻松地安装、更新和卸载项目的各种依赖项,包括开发依赖和生产依赖,确保项目的稳定性和可靠性。
  • 项目管理:npm不仅可以管理项目的依赖关系,还可以帮助开发者初始化新项目、发布项目到npm仓库、分享代码和资源,促进代码的共享和复用。
  • 脚本执行:通过在package.json文件中定义自定义脚本命令,npm可以帮助开发者执行各种项目任务,例如构建、测试、启动应用等,提高开发效率。
  • 版本控制:npm支持语义化版本规范(Semantic Versioning),开发者可以精确控制项目依赖包的版本,避免版本冲突和兼容性问题。
  • 社区贡献:开发者可以使用npm将自己编写的包发布到npm仓库,供其他开发者使用,也可以从npm仓库中获取其他开发者分享的包,扩展项目的功能和特性。

3、常用命令

  • npm install:安装项目的所有依赖项。可以使用 npm install packageName 安装特定包,也可以使用 npm install --save packageName 将包添加到 package.json 文件的 dependencies 中。
  • npm uninstall packageName:卸载指定的包。
  • npm update packageName:更新指定包的版本。
  • npm outdated:检查过时的依赖包。
  • npm init:初始化一个新的 npm 项目,生成 package.json 文件。
  • npm publish:将自己的包发布到 npm 仓库,需要先注册一个 npm 账号。
  • npm run scriptName:运行项目中定义的自定义脚本,例如 npm run start、npm run build 等。

4、设置 npm 下载源

  使用 npm 安装依赖时,会从设置好的下载源中下载,但是其默认的下载源有时无法满足我们的需求。

  比如,因为国内外网络环境的限制,所以会导致下载国外npm仓库较慢,给开发者在进行开发项目时造成不便。而国内有很多免费的镜像源,这些镜像源会复制 npm 的官方仓库,并提供给国内用户使用,通过设置镜像源,npm 将会从国内镜像源下载依赖,大大提高了下载速度。

  再比如,现在大部分的公司都会有自己的npm三方包管理仓库,利于三方包版本管理以及项目三方依赖稳定性。并且,如果我们npm配置了公司的源仓库地址,以后所有的三方包来源都将以这个仓库为准,假设现在要下载一个仓库没有的包,很自然的会提示找不到某个包的错误。

  基于此,根据需要切换 npm 下载源就显得格外重要,下面进行举例说明。

  淘宝镜像源相关操作:

  • 设置淘宝镜像源:npm set registry https://registry.npm.taobao.org/
  • 查看下载源地址:npm get registry

      

    由此可见,npm 当前的下载源为淘宝镜像源,当然,如果我们需要将下载源设置为公司仓库地址,只需在npm set registry 命令后加上相应的地址即可。

5、certificate has expired

  在安装依赖时,如果遇到 "certificate has expired" 问题,可能是以下原因导致的:

  • 有时候本地 npm 缓存可能存在过期的证书,可以尝试清理 npm 缓存并重新安装依赖来解决问题:
npm cache clean --force
  • 网络代理或防火墙问题:有时候网络代理或防火墙会干扰 SSL 证书的验证,导致证书过期错误。可以尝试关闭代理或者调整防火墙设置来解决问题。
  • npm 源设置问题:确保 npm 源的 SSL 证书是有效的且未过期。如果确实过期,但又想使用其下载,可以使用以下命令跳过 SSL 验证。
npm config set strict-ssl false

二、nrm(Npm Registry Manager)

通过上述说明,我们知道了可以使用 npm set registry 命令来设置 npm 源,但是当频繁切换下载源时会比较繁琐,因为每次切换都需要手动输入完整的源地址。相比之下,nrm 命令提供了更加便捷的方式来管理和切换 npm 源。接下来就让我们了解一下 nrm 以及其常见用法。

1、什么是 nrm ?

  nrm 是一个用于管理 npm 源的命令行工具,它为开发者提供了一种便捷的方式来管理和快速切换 npm 源,从而加快 npm 包的下载速度,提高开发效率。

2、nrm 的用途:

  • 管理多个源:nrm 允许用户添加多个自定义源,并提供了简单的命令来切换不同的源,方便管理多个 npm 源。
  • 简化切换操作:通过 nrm 的命令,可以使用简单的名称来切换源,而不需要手动输入完整的源地址,减少了繁琐的操作步骤。
  • 测试源速度:nrm 还提供了测试源速度的命令,可以帮助用户选择速度较快的源,提高 npm 包的下载速度。
  • 规范管理:nrm 提供了一个统一的命令行工具,规范了 npm 源的管理方式,使得管理更加方便和一致。

3、常用命令:

  在使用 nrm 命令前,首先要对其进行安装,通过以下命令进行全局安装即可:

npm i nrm -g

  接下来介绍一下 nrm 的常用命令及使用示例:

  • nrm ls:查看已有的 npm 源列表

    

    其中,星号标记的为当前下载源。

  • nrm current:查看当前使用的下载源

     

    不仅可以通过 npm 源列表查看当前下载源,该命令亦可达到同样的效果,只不过未显示具体地址。

  • nrm use <registryName>:切换到指定源

    

    这种方式的切换,远远比 npm set registry 命令使用更加简单,无需记住下载源具体地址即可完成切换。

  • nrm add <registryName> <registryUrl>:添加自定义源
  • nrm del <registryName>:删除已有的源
  • nrm test <registryName>:测试源速度

三、nvm(Node Version Manager)

有这么一个场景,假设我们同时在进行多个项目,而这些项目的要求并不相同,包括需要使用不同的 Node.js 版本。面对这种情况,我们可以利用 nvm 来轻松切换 Node.js 版本,而无需频繁地下载或卸载不同版本的 Node.js,以满足各个项目的特定需求。这样一来,我们能够更加方便地管理项目的开发环境,提高开发效率并避免因版本问题而产生的困扰。

1、nvm 是什么?

  nvm 是 Node.js 的版本管理工具,可以帮助开发者在同一台计算机上管理多个 Node.js 版本,方便地切换不同版本的 Node.js,以此达到在不同的项目中使用不同的 Node.js 版本,而不会相互冲突的目的。

2、nvm 的用途

  • 多版本管理:nvm 允许在同一台计算机上安装和管理多个 Node.js 版本,开发者可以根据需要灵活切换不同的版本。
  • 避免版本冲突:由于不同的项目可能需要不同的 Node.js 版本,使用 nvm 可以避免不同项目之间因为 Node.js 版本冲突而产生问题。
  • 方便升级和回退:nvm 提供了方便的命令来安装、升级和回退 Node.js 版本,开发者可以根据项目需求来管理版本。
  • 测试环境:对于需要测试不同 Node.js 版本的项目或者库,nvm 提供了便捷的方式来切换测试环境,确保项目在不同版本下的兼容性。

3、安装 nvm

  nvm 安装比较简单,这里对其安装就不过多赘述了,如有需要,可以自行搜索进行安装。但要格外注意的是,下载安装 nvm 之前,将本地环境中的 node 版本都卸载干净,否则可能会出现无法管理之前 node 版本的情况。

  安装完成后,查看一下其版本,以验证是否安装成功。

  

4、常用命令

  • nvm list:显示版本列表
nvm list // 显示已安装的版本(同 nvm list installed)

nvm list installed // 显示已安装的版本

nvm list available // 显示所有可以下载的版本
  • nvm install <version>:安装指定版本 Node.js
nvm install latest // 安装最新版本的 Node.js
  • nvm use <version>:切换使用指定版本的 Node.js
  • nvm uninstall <version>:卸载指定版本的 Node.js
  • nvm current:查看当前使用的 Node.js 版本

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/485230.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SqlServer找不到SQL Server Configuration Manager(配置管理)

1、Win键 R &#xff0c;输入 compmgmt.msc 2、找到Sql Server配置管理器

iOS开发 - 转源码 - __weak问题解决

iOS开发 - 转源码 - __weak问题解决 在使用clang转换OC为C代码时&#xff0c;可能会遇到以下问题 cannot create __weak reference in file using manual reference 原因 __weak弱引用是需要runtime支持的&#xff0c;如果我们还只是使用静态编译&#xff0c;是无法正常转换的…

PCIe总线-PCIe总线简介(一)

1.概述 早期的计算机使用PCI&#xff08;Peripheral Component Interconnect&#xff09;总线与外围设备相连&#xff0c;PCI总线使用单端并行信号进行数据传输&#xff0c;由于单端信号很容易被外部系统干扰&#xff0c;其总线频率很难进一步提高。目前&#xff0c;为了提高总…

文件夹读取不到文件:深度解析与高效恢复策略

一、遭遇文件夹读取难题&#xff1a;文件离奇失踪 在日常使用电脑或移动设备的过程中&#xff0c;我们有时会遇到一个令人头疼的问题&#xff1a;原本存储着重要数据的文件夹突然变得“空空如也”&#xff0c;其中的文件仿佛凭空消失一般&#xff0c;无法正常读取。这种文件夹…

开源博客项目Blog .NET Core源码学习(10:App.Framwork项目结构分析)

开源博客项目Blog的解决方案总共包括4个项目&#xff0c;其中App.Hosting项目包括所有的页面及控制器类&#xff0c;其它项目主要提供数据库访问、基础类型定义等。这四个项目的依赖关系如下图所示&#xff0c;本文主要分析App.Framwork项目的主要结构及主要文件的用途。   …

IDEA 远程调试

1.什么是远程调试 Java提供了一个远程调试功能&#xff0c;支持设置断点及线程级的调试同时&#xff0c;不同的JVM通过接口的协议联系&#xff0c;本地的Java文件在远程JVM建立联系和通信。 2.服务端开启远程调试 开启远程调试功能&#xff0c;需要修改tomcat 的catalina.sh…

Spring Cloud Gateway Server MVC

之前你如果要用spring cloud gateway &#xff0c;就必须是webflux 的&#xff0c;也就是必须是异步响应式编程。不能和spring mvc 一起使用。现在spring cloud 新出了一个可以不用webflux的gateway。 具体使用mvc的gateway步骤如下 普通的Eureka Client的项目 如果你只是想测…

unity无法使用道路生成插件Road Architect(ctrl和shift无法标点)

切换一下布局就行了。 附&#xff1a;Road Architect教学地址

以行动激发消费活力,加多宝引领高品质消费浪潮

2024年“315”期间&#xff0c;加多宝携手全国多地市场监督管理局、消费者协会等单位&#xff0c;围绕今年“激发消费活力”主题&#xff0c;积极配合各地相关政府部门开展系列宣传活动&#xff0c;以实际行动呼吁切实保护消费者合法权益&#xff0c;共建诚信消费环境&#xff…

Kubernetes概念:服务、负载均衡和联网:2. Gateway API

Gateway API 官方文档&#xff1a;https://kubernetes.io/zh-cn/docs/concepts/services-networking/gateway/ Gateway API 通过使用可扩展的、角色导向的、 协议感知的配置机制来提供网络服务。它是一个附加组件&#xff0c; 包含可提供动态基础设施配置和高级流量路由的 API…

机器学习——AdaBoost算法

机器学习——AdaBoost算法 在机器学习领域&#xff0c;AdaBoost算法是一种非常流行的集成学习方法&#xff0c;旨在提高分类器的性能。本篇博客将介绍AdaBoost算法的原理、算法流程、算法参数&#xff0c;对比AdaBoost和随机森林的区别&#xff0c;并使用Python实现AdaBoost算…

数据结构·排序

1. 排序的概念及运用 1.1 排序的概念 排序&#xff1a;排序是将一组“无序”的记录序列&#xff0c;按照某个或某些关键字的大小&#xff0c;递增或递减归零调整为“有序”的记录序列的操作 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同关键字的记…

[Java基础揉碎]单例模式

目录 什么是设计模式 什么是单例模式 饿汉式与懒汉式 饿汉式vs懒汉式 懒汉式存在线程安全问题 什么是设计模式 1.静态方法和属性的经典使用 2.设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、 以及解决问题的思考方式。设计模式就像是经典的棋谱&am…

Docker进阶:Docker-cpmpose 实现服务弹性伸缩

Docker进阶&#xff1a;Docker-cpmpose 实现服务弹性伸缩 一、Docker Compose基础概念1.1 Docker Compose简介1.2 Docker Compose文件结构 二、弹性伸缩的原理和实现步骤2.1 弹性伸缩原理2.2 实现步骤 三、技术实践案例3.1 场景描述3.2 配置Docker Compose文件3.3 使用 docker-…

Spark Map 和 FlatMap 的比较

Spark Map 和 FlatMap 的比较 本节将介绍Spark中map(func)和flatMap(func)两个函数的区别和基本使用。 函数原型 map(func) 将原数据的每个元素传给函数func进行格式化&#xff0c;返回一个新的分布式数据集。 flatMap(func) 跟map(func)类似&#xff0c;但是每个输入项和…

基于51单片机数控直流电压源proteus仿真LCD显示+程序+设计报告+讲解视频

基于51单片机数控直流电压源proteus仿真LCD显示( proteus仿真程序设计报告讲解视频&#xff09; 仿真图proteus7.8及以上 程序编译器&#xff1a;keil 4/keil 5 编程语言&#xff1a;C语言 设计编号&#xff1a;S0072 讲解视频 基于51单片机数控直流电压源proteus仿真程序…

37、Linux中Xsync数据同步备份工具

37、Linux中Xsync数据同步备份工具 一、介绍二、配置集群hostname三、修改xsync文件四、赋权五、安装Rsync六、验证一七、配置免密登录1、生成rsa密钥2、copy机器自身公钥到目标机器3、.ssh/文件目录赋权 八、验证二 ⚠️ 注&#xff1a;本文全程在普通用户下操作&#xff0c;…

基于spring boot的个人博客系统的设计与实现(带源码)

随着国内市场经济这几十年来的蓬勃发展&#xff0c;突然遇到了从国外传入国内的互联网技术&#xff0c;互联网产业从开始的群众不信任&#xff0c;到现在的离不开&#xff0c;中间经历了很多挫折。本次开发的个人博客系统&#xff0c;有管理员&#xff0c;用户&#xff0c;博主…

QT----基于QT的人脸考勤系统ubuntu系统运行,编译开发板

目录 1 Ubantu编译opencv和seetaface库1.1 Ubantu编译opencv1.2 Ubuntu编译seetaface1.3 安装qt 2 更改代码2.1 直接运行报错/usr/bin/ld: cannot find -lGL: No such file or directory2.2 遇到报错摄像头打不开2.3 修改部分代码2.4 解决中文语音输出问题 3 尝试交叉编译rk358…

QTabWidget的tabbar不同方向显示 文字方向设置 图标跟随变化 实现方式 qt控件绘制原理

先来看结果图&#xff1a;&#xff08;参考博客&#xff1a;QTabWidget中tab页文本水平或垂直设置_pyqt tab_widget.settabposition(qtabwidget.west) 字体-CSDN博客&#xff09; 从图中可知&#xff0c;"普通"是qt自己的样式&#xff0c;但是很明显&#xff0c;在垂…