nvm 和 nrm安装使用

2023-11-18

前端工具推荐:nvm(Node 版本管理工具) 和 nrm(管理npm源)

一、nvm

        如果直接将 node 安装到电脑上,通常只能安装某个特定的版本,如 v18.12.1。而某些老项目可能只支持老版本的 node,如 v14.19.3。这时候怎么办呢?先卸载当前版本、再安装需要使用的版本,当需要使用新版本时又重新安装 ?不必这么麻烦,nvm 可以替咱解决这个问题。

1.1 nvm 是什么

        nvm:Node Version Manager,Node 版本管理工具。可以很方便的安装、切换 Node JS 的版本。它可以方便地在一个系统中安装和管理多个node.js版本。这个工具可以快速切换不同版本的node.js,在不影响其他应用程序的情况下轻松测试代码。

该项目在 github 上 68k stars

以下是nvm的主要特点:

  1. 支持多平台,包括Linux、macOS和Windows操作系统。

  2. 支持安装和管理多个node.js版本,可以在不同版本之间切换。

  3. 管理全局npm包,可以在不同版本之间共享npm包。

  4. 支持自定义node.js安装和源代码编译选项。

  5. 实现简单,使用方便,通过简单的命令就可以完成安装、卸载和切换node.js版本。

1.2 安装 nvm

1、windows:可从 github 下载,下载地址:Release 1.1.10 · coreybutler/nvm-windows · GitHub

2、Mac:在官方 Github 页面上获取最新版本的安装命令,Github 地址:GitHub - nvm-sh/nvm: Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions

当前最新的安装命令为:


curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash

或

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash

安装完成后,查看 nvm 版本:

nvm --version

如果版本号正确显示,则安装成功。

如果安装失败,可以尝试彻底删除之前在电脑上已经安装的 node 和 npm:

# 删除全局 node_modules 目录
sudo rm -rf /usr/local/lib/node_modules

# 删除 node
sudo rm /usr/local/bin/node

# 删除全局 node 模块注册的软链
cd /usr/local/bin && ls -l | grep "../lib/node_modules/" | awk '{print $9}'| xargs rm

1.3 使用 nvm
 

  1. 安装 Node.js 版本:

    • 查看官方所有可安装的 Node 版本:nvm ls-remote

    • 安装最新稳定版的 Node.js:nvm install stable

    • 安装指定版本的 Node.js:nvm install <version> (例如:nvm install 14.17.0)支持模糊安装,如:nvm install 14

  2. 切换 Node.js 版本:

    • 切换到已安装的其中一个版本:nvm use <version> (例如:nvm use 14.17.0

    • 可以通过简写版本号进行切换(例如 nvm use 14),nvm 将自动选择符合的已安装版本。

    • 如果在项目目录中创建了 .nvmrc 文件,nvm 在进入该目录时会自动切换到文件中指定的 Node.js 版本。

  3. 查看已安装的 Node.js 版本:

    • 列出已安装的所有版本:nvm ls

    • 列出远程可用的所有版本:nvm ls-remote

    • 查看当前的 Node 版本:nvm current

  4. 卸载 Node.js 版本:

    • 卸载指定的 Node.js 版本:nvm uninstall <version> (例如:nvm uninstall 14.17.0)或 nvm uninstall 14

  5. 设置默认的 Node.js 版本:

    • 设置默认版本:nvm alias default <version> (例如:nvm alias default 14.17.0

    • 这样,在新打开的终端中将自动使用默认版本。

  6. 运行 Node.js 命令和 npm:

    • 在已安装的 Node.js 版本下运行命令:nvm exec <version> <command> (例如:nvm exec 14.17.0 node -v

    • 在当前使用的 Node.js 版本下运行命令:nvm run <command> (例如:nvm run node -v

上述为常用命令。此外还有一些不常用、但可能会用到的命令:

1.在当前的 Node 版本下,重新全局安装指定版本号的 npm 包。

nvm reinstall-packages <version>

2.给不同版本的 Node 添加别名

nvm alias <name> <version>

3.删除定义的别名

nvm unalis <name>

nvm还支持其他的命令,可以通过nvm --help来查看使用帮助。总之,nvm是一个非常实用的工具,对于开发者来说非常值得尝试。

二、nrm
 

在开发中,我们通常需要安装很多 npm 包,而默认的 npm 源有时候就可能下载很慢,所以就需要切换 npm 源,nrm 就可以帮助我们管理和切换 nrm 源。其特点如下:

  • 管理多个源:nrm 允许管理多个 npm 源,例如官方源、淘宝源、cnpm 源等。你可以根据需要快速切换不同的源。

  • 快速切换:nrm 提供了快捷的命令来切换 npm 源,无需手动修改配置文件。你可以通过简单的命令在不同的源之间进行切换。

  • 测试速度:nrm 可以测试各个源的响应速度,并给出评分,帮助你选择最快的源来加快依赖包的下载速度。

前面介绍的 nvm 可以用来切换 Node 的版本。在开发中,除了 Node 版本可能会切换,npm 源也可能会切换,如默认的 npm 源、淘宝源等,手动切换每次都需要输入:

npm config set registry https://mirrors.cloud.tencent.com/npm/

命令虽然简单,但地址每次都得到处搜索。使用 nrm 便可以方便的管理各个源。

2.1 nrm 是什么

nrm:NPM Registry Manager,npm 注册中心管理,即 npm 源管理工具,使用它可以快速切换npm源。

2.2 安装 nrm

使用 npm 全局安装 nrm:

npm install -g nrm

安装完成后,查看版本号:

nrm --version

正确显示版本号,则安装没问题。

2.3 使用 nrm

1.查看可用源列表:你可以使用以下命令查看当前可用的源列表:

nrm ls

2.切换源

nrm use <源名称>
如:nrm use tencent
例如,要切换到 taobao 源,可以执行:
nrm use taobao

3.添加新的源

nrm add <源名称> <源地址>
如:nrm add local http://localhost:7001/

3.1添加自定义源:如果你有自定义的源,可以通过以下命令添加:

nrm add <源名称> <源地址>

 例如,添加一个名为 myregistry 的自定义源:

nrm add myregistry http://myregistry.com/

4.删除源 如果要删除已添加的源,可以使用以下命令:

nrm del <源名称>
如:nrm del local

5.源测速

# 测试所有源nrm test
# 测试指定的源nrm test <源名称>
如:nrm test yarn

6.查看当前的源

nrm current

如果没有显示结果,那就用原始的命令查看:

npm config get registry

在安装 nrm 时,我遇到以下报错,这就是说没有安装权限:

图片

可以使用管理员权限进行安装,只需要在命令前面增加以一个 sudo,执行 后输入电脑的密码即可。

 

*本文到此结束,假如对你有所启发,希望点“赞”和“收藏”,多谢鼓励!*

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nvm 和 nrm安装使用 的相关文章

  • 如何获取与值匹配或存在于另一个表中的记录?

    我试图弄清楚在这种情况下如何获取所有任务 其中两个字段等于某个值或者它们存在于另一个表中 这是查询 SELECT TASKS task id TASKS task title TASKS task description TASKS tas
  • node.js 和 npm 在 Windows 7 64 位旗舰版中没有网络访问权限

    注意 对于遇到此问题的其他人 我尝试了所有建议和所有研究 最后我格式化了硬盘并重新安装了windows 尽管从一开始就是全新安装 但某些 Windows 安装似乎根本无法与 Node 一起使用 据我所知 这是唯一的解决方案 首先 我已经发现
  • 访问 Node.js 全局模块

    npm 文档是这样说的 如果您正在安装想要在程序中使用的东西 请使用 require whatever 然后将其安装在本地项目的根目录下 如果您要安装要在 shell 中使用的东西 请在命令行或 某些东西 全局安装它 以便它的二进制文件最终
  • 如何模拟 typeorm 连接

    在集成测试中 我使用以下代码片段来创建连接 import Connection createConnection from typeorm ts ignore import options from ormconfig js export
  • 我怎样才能摆脱错误:无法在 Heroku 上找到模块“模型”

    我在 Heroku 上不断收到此错误 错误 找不到模块 模型 我正在使用 Node JS 我在用着这个 Node JS 项目 https github com gravityonmars nodejs starter 我从 Heroku 复
  • 节点检查器显示对象“无属性”

    我在调试场景中相当陌生 尤其是节点检查器 安装节点检查器后 我使用 debug 参数启动了简单的节点应用程序 并且能够在 localhost 8080 debug port 5858 处看到调试视图 当我让应用程序在此断点处停止时 rout
  • Typescript 和 Mongoose - “this”在实例方法中不可用

    我目前正在将我的 API 从 JS 转换为 TS 然而 我在猫鼬和打字稿方面遇到了一些困难 具体来说 this在我的实例方法中不可用 My code AccountSchema methods comparePassword async f
  • 使用 AWS Lambda 从 AWS S3 读取并提取巨大的 zip 文件

    我正在开发数据管理应用程序 客户可以上传zip file approx 250 MB 与多个text files approx 1500 MB on AWS S3 但由于记忆有限aws lamda 最大 1536MB 大小 我能够提取 50
  • 使用admin sdk在云函数中执行firestore集合组查询?

    firestore collectionGroup 方法在云函数中与 firebase admin sdk 一起使用时出现错误 是否可以在云函数中对 firestore 进行集合组查询 这是我尝试使用的 firestore 查询方法 htt
  • MongoDB,从数组中删除对象

    Doc id 5150a1199fac0e6910000002 name some name items id 23 name item name 23 id 24 name item name 24 有没有办法从数组中提取特定对象 IE
  • 如何从控制器返回 PDF 文件

    我正在尝试使用 NestJs 从控制器端点返回 PDF 文件 未设置时Content typeheader 返回的数据getDocumentFile 很好地返回给用户 然而 当我添加标头时 我得到的返回似乎是某种奇怪形式的 GUID 响应总
  • Angular2 + Laravel 与实时和 WebSockets

    我构建了一个应用程序 并计划与 Angular 2 和 laravel 进行实时战斗 例如 你按下 攻击 按钮 你的对手就会实时看到他的生命在下降 我的应用程序构建有 前端 角2 Backend PHP Laravel 5 2 现在我正在寻
  • Mongodb更新很多

    我正在使用express js 和 npm 模块 mongodb 进行开发 并以 mongodb 作为数据库 我有两个集合 即 用户 和 活动 一个用户可能有数千个活动 首先 我将用户的 id 姓名和图片 url 存储到 关系的活动文件 请
  • 如何将 Gulp 添加到我的项目中?

    我正在使用 Windows 7 Visual Studio 2013 我正在尝试在我的客户项目中设置 Gulp 我已将这些 Nuget 添加到项目中 Node js 版本 0 12 0 Npm js 版本 1 3 15 10 由于某种原因我
  • 获取对象数组中每个嵌套对象的虚拟属性?

    所以我知道如何获取单个虚拟属性 如 Mongoose 文档中所述 PersonSchema virtual name full get function return this name first this name last 但如果我的
  • 如何在 Google Translate Node.js 代码中设置 API KEY

    我正在尝试创建一个使用 Google Translate API 的 Node js 代码 我从以下代码中得到了谷歌文档 https cloud google com translate docs translating text 但是当我
  • S3.getSignedUrl 接受多种内容类型

    我正在使用react s3 uploader节点包 它接受一个signingUrl用于获取用于将对象存储到 S3 中的signedUrl 目前 我已经配置了一个 lambda 函数 带有 API 网关端点 来生成此signedUrl 经过一
  • 护照:登录和帐户注册的不同重定向

    我在我的应用程序中使用护照模块 github身份验证 我想根据操作进行重定向 我检查这是否只是正常登录或者用户是否第一次登录 passport use new GitHubStrategy clientID conf github app
  • 如何使用 Playwright 使用选择器查找框架 (iframe)

    我有一个小问题 无法找到使用 Microsoft Playwright 框架的答案 根据您可以使用以下代码获取 iframe const frame page frame frame login 但是如何使用选择器来查找 iframe 并与
  • Cloud Functions for Firebase - 通过 Nodejs/Cloud Function 将多个 PDF 合并为一个

    我遇到了一个问题 我试图通过云功能合并一堆 PDF 然后将合并的 PDF 下载到用户的计算机上 我的提供程序中有一个函数 它调用云函数并传递指向 pdf 的 URL 数组 如下所示 mergePDFs pdfs Create array o

随机推荐

  • 直流电路中升降压(Buck-Boost)变换电路的设计、参数选取及Matlab/Simulik仿真

    创作不易 感谢大家点赞关注支持 感兴趣的可以点击收藏 这一篇文章给大家介绍一种升降压 Buck Boost 直流变换电路 喜欢的可以点击收藏 升降压 Buck Boost 直流变换电路是通过调节开关管占空比的大小 占空比越小 输出电压越小
  • QT 之键盘事件(捕获键盘按下、松开事件)

    我们在做软件时候 经常会碰到这样的场景 比如按下F5进行刷新功能 按下F1进行帮助之类的快捷键方式 那么在QT中该怎样做呢 查阅文档 QT已经实现了这一系列的键盘事件 void QWidget keyPressEvent QKeyEvent
  • 拷贝构造和拷贝赋值

    拷贝构造表示有新的对象被定义 Object obj1 obj2 新的Object对象obj1被定义 此时调用拷贝构造函数 copy construction 拷贝赋值表示没有新的对象被定义 obj1 obj2 obj1是一个已经被声明过的对
  • WebSocket学习

    一 简介 WebSocket 是一种网络通信协议 RFC6455 定义了它的通信标准 WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议 HTTP 协议是一种无状态的 无连接的 单向的应用层协议 它
  • Pythonの类

    Python是一种面向对象编程语言 因此类在Python中是很重要的概念 类是一种定义数据和行为的模板 可以创建对象并针对特定的问题对其进行操作 在Python中 类的定义以关键字 class 开头 后跟类的名称 类可以包含方法和属性 方法
  • mpvue实现微信小程序样式切换以及本地缓存

    功能描述 在页面A的添加应用中点击 添加 跳转到展示所有应用的页面B 通过点击开关 在页面A中展示所开启的应用 效果展示 代码 页面B代码 div class itembox div class boxhead img div class
  • [HDU 5079][2014 Asia AnShan Regional Contest]Square(DP套DP)

    题目链接 http acm hdu edu cn showproblem php pid 5079 题目大意 给你一个 n n n 8 n middot n n le 8 的棋盘 上面有一些格子必须是黑色 其它可以染黑或者染白 对于一个棋盘
  • python实现逻辑回归三种方法_纯Python实现逻辑回归

    前几天使用后sklearn实现了逻辑回归 这里用纯python实现逻辑回归 首先 我们定义一个sigmoid函数 def sigmoid inX sigmoid函数 return 1 0 1 exp inX 这里使用梯度上升进行逻辑回归 梯
  • 【编译之美】【5. 代码优化:数据流分析】

    有些优化只能在全局优化中做 在本地优化中做不了 比如 代码移动 Code motion 能够将代码从一个基本块挪到另一个基本块 比如从循环内部挪到循环外部 来减少不必要的计算 循环剥离 部分冗余删除 Partial Redundancy E
  • 角落的开发工具集之Vs(Visual Studio)2017插件推荐

    工具善其事 必先利其器 装好这些插件让vs更上一层楼 因为最近录制视频的缘故 很多朋友都在QQ群留言 或者微信公众号私信我 问我一些工具和一些插件啊 怎么使用的啊 那么今天我忙里偷闲整理一下清单 然后在这里面公布出来 Visual Stud
  • 毕业设计-基于深度学习的花卉识别分类

    目录 前言 课题背景和意义 实现技术思路 一 花卉识别相关理论基础 二 基于 ResNeXt 和迁移学习的花卉种类识别 三 基于 EfficientNet 和迁移学习的花卉种类识别 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光
  • scss 中公共变量的导出方法:export

    前言 在使用vue或者react开发项目时都会用到scss 或者less等的扩展语言 那么肯定会有公共变量提取与使用 这篇文章就是记录如何导出公共css变量的 export 关键词 menuText bfcbd9 menuActiveTex
  • React 相关方法(API)介绍-元素与组件操作

    JSX可以减少定义组件的复杂性 但对于React来说JSX并不是必须的 JSX标签最终会被转换为原生的JavaScript 除使用JSX语法外 还可以使用React提供的API来创建组件 本文将介绍使用React创建元素 及一些React中
  • 类与对象基础

    1 面向对象概述 面向过程就是分析出解决问题所需要的步骤 然后用函数把这些步骤一一实现 使用的时候依次调用就可以了 面向对象则是把构成问题的事务按照一定规则划分为多个独立的对象 然后通过调用对象的方法来解决问题 当然 一个应用程序会包含多个
  • JAVA构造方法与static 关键字

    JAVA的构造方法 什么是构造方法 构造方法用来生成一个实例化的对象并对对象实例中的成员变量进行初始化 采用new创建对象时 构造方法被执行 构造方法的方法名必须和类名保持一致 注意 构造方法没有返回值 不可以加void 只能用 publi
  • 设计模式之命令模式

    优质资源分享 学习路线指引 点击解锁 知识定位 人群定位 Python实战微信订餐小程序 进阶级 本课程是python flask 微信小程序的完美结合 从项目搭建到腾讯云部署上线 打造一个全栈订餐系统 Python量化交易实战 入门级 手
  • 【2021应用上架】超详细开发者账号申请&应用上架审核经验整理

    一 准备阶段需要注意的 1 上架前开发者账号申请 申请的主体确定 在公司有多个主体的情况下 用哪个公司主体认证开发者 上架APP时需要考虑到应用相关的各种材料申请在哪个公司名下 材料所属公司主体与开发者账号主体不一致的情况需要开发者花费时间
  • vue节流和防抖

    节流 节流是间隔执行 在定时器到时间后再清空定时器 函数将每个 n 秒执行一次 在内部定义一个定时器和一个开关变量 初始化变量为true 执行定期器前判断变量是否false 就return 为true 如果是继续执行 并且把变量赋值为fal
  • 使用JSON.toJSONString时,出现“$ref”怎么办?服务器返回对象显示$ref怎么解决?

    现象 代码 Map
  • nvm 和 nrm安装使用

    前端工具推荐 nvm Node 版本管理工具 和 nrm 管理npm源 一 nvm 如果直接将 node 安装到电脑上 通常只能安装某个特定的版本 如 v18 12 1 而某些老项目可能只支持老版本的 node 如 v14 19 3 这时候