npm、nrm、nvm详解与应用

news2024/9/26 1:29:03

本文全面介绍了 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 版本

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python综合实战案例-数据分析

Python是进行数据分析的好工具&#xff0c;今天就是借助一个案例给大家进行数据分析讲解。 本例设计一个log.txt⽂件&#xff0c;该文件记录了某个项⽬中某个 api 的调⽤情况&#xff0c;采样时间为每分钟⼀次&#xff0c;包括调⽤次数、响应时间等信息&#xff0c;⼤约18万条数…

java数据结构与算法刷题-----LeetCode451. 根据字符出现频率排序

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. hash统计出现次数后排序2. 桶排序 1. hash统计出现次数后排序…

WebClient 同步、异步调用实现对比

文章目录 一、概述二、pom依赖三、代码结构四、源码传送1、异步代码2、同步代码3、完整代码 一、概述 WebClient是Spring WebFlux模块提供的一个非阻塞的基于响应式编程的进行Http请求的客户端工具&#xff0c;从Spring5.0开始WebClient作为RestTemplete的替代品&#xff0c;有…

初探Flink集群【持续更新】

周末下雨&#xff0c;倒杯茶&#xff0c;在家练习Flink相关。 开发工具&#xff1a;IntelliJ Idea 第一步、创建项目 打开Idea&#xff0c;新建Maven项目&#xff0c;包和项目命名 在pom.xml 文件中添加依赖 <properties><flink.version>1.13.0</flink.vers…

python(django(自动化))之流程接口展示功能前端开发

1、创建模板代码如下&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>测试平台</title> </head> <body role"document"> <nav class "navbar n…

轻量级 C++ UI 库:快速、可移植、自包含 | 开源日报 No.168

ocornut/imgui Stars: 53.4k License: MIT imgui 是 C 的无臃肿图形用户界面&#xff0c;具有最小的依赖关系。 该项目的主要功能、关键特性、核心优势包括&#xff1a; 为 C 提供了一个轻量级的图形用户界面库输出优化的顶点缓冲区&#xff0c;可在 3D 渲染应用程序中随时呈…

2024/03/24----Pycharm社区版本下载以及创建一个新项目

1.本科安装过这个软件&#xff0c;因为系统重置了&#xff0c;所以重头再来一遍。 2.链接 社区版本Pycharm 3.我下载了2023.1.15的版本&#xff0c;越前面一些的版本可能会比较稳定 4.安装步骤 &#xff08;1&#xff09;先把文件安装目录改成其他盘(文件名最好不要有数字和符号…

2025汤家凤考研数学视频,基础网课百度网盘课程+PDF讲义资料

2025汤家凤大神及数学全程 docs.qq.com/doc/DTmtOa0Fzc0V3WElI 复制粘贴到浏览器&#xff0c;可以见所有的Ke 第一轮 夯实基础 1.阅读大纲考查要求&#xff0c;明确每章的学习目标&#xff1b; 2.按节学习数学理论基础知识&#xff0c;吃透书中例题&#xff1b; 3.学习每章…

Django 三板斧、静态文件、request方法

【一】三板斧 【1】HttpResponse &#xff08;1&#xff09;介绍 HttpResponse是Django中的一个类&#xff0c;用于构建HTTP响应对象。它允许创建并返回包含特定内容的HTTP响应。 &#xff08;2&#xff09;使用 导入HttpResponse类 from django.http import HttpResponse创…

Python学习从0到1 day18 Python可视化基础综合案例 1.折线图

我默记这段路的酸楚&#xff0c;等来年春暖花开之时再赏心阅读 —— 24.3.24 python基础综合案例 数据可视化 — 折线图可视化 一、折线图案例 1.json数据格式 2.pyecharts模块介绍 3.pyecharts快速入门 4.数据处理 5.创建折线图 1.json数据格式 1.什么是json 2.掌握如何使用js…

【云开发笔记No.9】Kanban与敏捷开发

Kanban看板起源于丰田。 看板&#xff08;Kanban&#xff09;一词来自日文&#xff0c;本义是可视化卡片。如下图所示&#xff0c;看板工具的实质是&#xff1a;后道工序在需要时&#xff0c;通过看板向前道工序发出信号——请给我需要数量的输入&#xff0c;前道工序只有得到看…

阿里云4核16G服务器优惠价格26元1个月、149元半年

阿里云4核16G服务器优惠价格26.52元1个月、79.56元3个月、149.00元半年。2024年腾讯云服务器优惠价格表&#xff0c;一张表整理阿里云服务器最新报价&#xff0c;阿里云服务器网整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单&#xff0c;大家也…

[iOS]GCD(一)

[iOS]GCD(一) 文章目录 [iOS]GCD(一)GCD的概要GCD的APIDispatch Queuedispatch_queue_createMain Dispatch_set_target_queuedispatch_afterDispatch Groupdispatch_barrier_asyncdispatch_applydispatch_applydispatch_suspend/dispatch_resumeDispatch Semaphoredispatch_onc…

力扣:290. 单词规律

前言&#xff1a;剑指offer刷题系列 问题&#xff1a; 给定一种规律 pattern 和一个字符串 s &#xff0c;判断 s 是否遵循相同的规律。 这里的 遵循 指完全匹配&#xff0c;例如&#xff0c; pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律…

大数据Spark--入门

文章目录 Spark 概述Spark 是什么Spark and HadoopSpark and HadoopSpark 核心模块 Spark 简单上手创建Maven项目增加 Scala 插件增加依赖关系WordCount异常处理 Spark 概述 Spark 所需资料 链接&#xff1a;https://pan.baidu.com/s/12iaW68vriL6i-xI1kmr0_g?pwdm4zc 提取码…

跨时钟域学习记录(一)

亚稳态 亚稳态是电平介于高低电平之间的一种暂时状态。在同步系统中&#xff0c;当寄存器的信号无法满足建立时间和保持时间时&#xff0c;输出端的信号就可能出现亚稳态。在异步系统中&#xff0c;亚稳态并非一定在建立时间和保持时间无法满足时出现。   受噪声、温度、电压…

MongoDB高可用架构涉及常用功能整理

MongoDB高可用架构涉及常用功能整理 1. mongo架构和相关组件1.1. Master-Slave主从模式1.2. Replica Set 副本集模式1.3. Sharding 分片模式 2. Sharding 分片模式2.1. Hashed Sharding方式2.2. Range Sharding方式 3. 事务性4. 疑问和思考4.1. 怎么保证数据的高可靠&#xff1…

oracle 19c RAC补丁升级

1.停止集群件备份家目录 ----两节点分别操作 cd /u01/app/19.3.0/grid/bin/ crsctl stop crstar -zcvf /u01/app.tar.gz /u01/app/u01/app/19.0.0/grid/bin/crsctl start crs2.两节点 GI、DB OPatch 替换&#xff08;都得执行&#xff09; ----# 表示 root 用户&#xff0c;$…

UDP建立聊天群

参考网上代码 接收端 #include<myhead.h> #define PRINT_ERR(msg) \ do \ { \ printf("%s,…

docker 本地机 互通文件

查询容器name 查询容器Id 进行传输