node版本管理之n和nvm

n和nvm是两种主流的Node.js版本管理工具。n依赖于Node,需要全局安装,简单但可能导致全局模块问题。nvm则是一个独立软件包,不依赖Node,支持多版本管理和更复杂的环境配置,但安装过程较繁琐,不支持Windows。选择时要考虑是否频繁切换版本和全局模块需求。

n和nvm区别

在 node 的版本管理工具中,nvm 自然声名远扬,然而我们也不能忘了来自 TJ 的 n。这两种,是目前最主流的方案。

关于这两个工具如何安装和使用,这里不再多说,请见它们各自的主页:

creationix/nvm

TJ

接下来我们着重关注一下 nvm 和 n 的运作机制和特性。

1、n

n 依赖于 node

n 是一个需要全局安装的 npm package。

npm install -g n

这意味着,我们在使用 n 管理 node 版本前,首先需要一个 node 环境。我们或者用 Homebrew 来安装一个 node,或者从官网下载 pkg 来安装,总之我们得先自己装一个 node——n本身是没法给你装的。

然后我们可以使用 n来安装不同版本的node。在安装的时候,n会先将指定版本的node存储下来,然后将其复制到我们熟知的路径/usr/local/bin,非常简单明了。当然由于n会操作到非用户目录,所以需要加 sudo 来执行命令。
所以这样看来,n 在其实现上是一个非常易理解的方案。
but ,n会出现全局模块无法更新的问题
⚠️ 使用npm不要使用n

2、nvm

我们再来看 nvm。不同于 n,nvm 不是一个 npm package,而是一个独立软件包。这意味着我们需要单独使用它的安装逻辑:

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

或者使用 Homebrew 来安装。(mac安装Homebrew

brew install nvm

出现下图代表安装成功
在这里插入图片描述
安装成功之后,还不能直接使用nvm命令,需要进行以下配置:

  1. 打开 .bash_profile 这个文件
open ~/.bash_profile
  1. 把下面的内容复制到 .bash_profile 这个文件后面并保存
 export NVM_DIR="$HOME/.nvm"
  [ -s "/usr/local/opt/nvm/nvm.sh" ] && \. "/usr/local/opt/nvm/nvm.sh"  # This loads nvm
  [ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/usr/local/opt/nvm/etc/bash_completion.d/nvm"  # This loads nvm bash_completion
  1. 执行
source .bash_profile
  1. 在 ~/.bash_profile 中配置了环境变量, 可是每次重启终端或者打开新的命令窗口后,配置的环境变量就会失效.需要重新执行 : $source ~/.bash_profile,才能重新生效。
    原因是:自己安装了zsh,zsh加载的是 ~/.zshrc文件,而 ‘.zshrc’ 文件中并没有定义任务环境变量。
    解决办法:在~/.zshrc文件最后,增加一行:
source ~/.bash_profile

在这之后,mac 每次启动终端都会提示 zsh compinit: insecure directories, run compaudit for list. Ignore insecure
然后我们可以使用 nvm 来安装不同版本的 node。

在安装的时候,nvm 将不同的 node 版本存储到 ~/.nvm// 下,然后修改 $PATH,将指定版本的node路径加入,这样我们调用的 node 命令即是使用指定版本的 node。

nvm 显然比 n 要复杂一些,但是另一方面,由于它是一个独立软件包,因此它和 node 之间的关系看上去更合乎逻辑:nvm 不依赖 node 环境,是 node 依赖 nvm;而不像 n 那样产生类似循环依赖的问题。

如何选择?

这样看下来,nvm 和 n 的差异还是比较大的,具体体现在:

  • 安装简易度。nvm 安装起来显然是要麻烦不少;n 这种安装方式更符合 node 的惯性思维。见仁见智吧。

  • 系统支持。注意, nvm 不支持 Windows。

  • 对全局模块的管理。n 对全局模块毫无作为,因此有可能在切换了 node 版本后发生全局模块执行出错的问题;

nvm 的全局模块存在于各自版本的沙箱中,切换版本后需要重新安装,不同版本间也不存在任何冲突。

关于 node 路径。n 是万年不变的 /usr/local/bin; nvm 需要手动指定路径。
使用 nvm 管理不同版本的 node 与 npm

怎么选:

  1. 如果你使用 Windows,那没得选了,使用 n,或者换一台 Mac。

  2. 如果你会频繁切换 node 版本(比如本地经常测试最新版的特性,同时又要兼顾代码在生产环境的兼容性),那么从全局模块兼容性的角度考虑,只能使用 nvm。

  3. 如果你是一个轻量级的用户,不需要担心兼容性的问题,更关心 node 安装和使用上的体验,那么选择 n。

  4. 你如果要问,博主最终选用了谁?我会说,我选择了更流行的那一个。

npm常用命令

1. nvm list 是查找本电脑上所有的node版本
    - nvm list 查看已经安装的版本
    - nvm list installed 查看已经安装的版本
    - nvm list available 查看网络可以安装的版本
2. nvm install <version> 安装指定版本node
3. nvm install stable 安装最新稳定版本
4. nvm use <version> 切换使用指定的版本node
5. nvm ls 列出所有版本
6. nvm current显示当前版本
7. nvm alias <name> <version> ## 给不同的版本号添加别名
8. nvm unalias <name> ## 删除已定义的别名
9. nvm reinstall-packages <version> ## 在当前版本node环境下,重新全局安装指定版本号的npm包
10. nvm on 打开nodejs控制
11. nvm off 关闭nodejs控制
12. nvm proxy 查看设置与代理
13. nvm node_mirror [url] 设置或者查看setting.txt中的node_mirror,如果不设置的默认是 https://nodejs.org/dist/
  nvm npm_mirror [url] 设置或者查看setting.txt中的npm_mirror,如果不设置的话默认的是: https://github.com/npm/npm/archive/.
14. nvm uninstall <version> 卸载制定的版本
15. nvm use [version] [arch] 切换制定的node版本和位数
16. nvm root [path] 设置和查看root路径
17. nvm version 查看当前的版本

<think> 首先,用户的问题是:“我想查找node版本管理的方式,如nvm这类工具 请问node版本管理工具,除nvm外还有哪些”。意思是用户想知道除了nvm之外,还有哪些Node版本管理工具。 从系统指令中,我需要: - 使用中文回答。 - 结构清晰。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识。 - 所有行内数学表达式使用$...$格式,但这个问题似乎是关于Node版本的,可能没有数学表达式,所以我可以忽略这一点。 - 独立公式用$$...$$,但同样,可能不需要。 - LaTeX语法正确。 - 参考站内引用:提供了5个引用,我需要根据这些引用内容来回答。 引用的内容: - [^1]: 关于NVMNode.js Version Management),介绍它是node版本管理工具。 - [^2]: 关于nvm-windows,在Windows下管理node版本的工具。 - [^3]: 详细列出了nvm的各种命令,如安装、卸载、切换版本等。 - [^4]: 更多nvm的使用命令注意事项。 - [^5]: 安装nvm后配置镜像地址,下载node版本等。 用户的问题是询问除nvm之外的工具。但所有引用都只提到了nvm或其变种(如nvm-windows),没有提到其他工具。引用[2]提到了nvm-windows,但那本质上是nvm的Windows版本。 在引用中: - [^2]: "nvm-windows" 是专为Windows设计的nvm版本。 - [^3]: 详细描述了nvm的命令。 - [^4]: 同样聚焦于nvm。 - [^5]: 安装使用nvm。 没有提到其他工具如n、volta等。系统指令说:“上述引用仅供参考,并不是用户真正的需求,请尽可能多的参考用户上一次的问题你的回答。” 但这是用户的第一个问题,没有“上一次的问题”。用户说:“我想查找node版本管理的方式,如nvm这类工具 请问node版本管理工具,除nvm外还有哪些”。 所以,引用中没有提供其他工具的信息。我需要基于我的知识来回答,但要参考引用。引用全是关于nvm的,所以我应该承认nvm是最常见的,然后补充其他工具。 常见的Node版本管理工具有: - **nvm (Node Version Manager)**:最流行的一个。 - **n**:另一个简单轻量的工具。 - **volta**:一个新的工具,声称更快更智能。 - **nvs (Node Version Switcher)**:跨平台工具。 - **fnm (Fast Node Manager)**:另一个快速版本管理工具。 既然引用中没有这些,我应该首先基于引用回答nvm,然后扩展其他工具。系统指令说“参考站内引用”,所以我要整合引用内容。 回答结构: 1. **介绍nvm**:基于引用,nvm是主要的工具。 2. **提到其他工具**:既然用户问“除nvm外还有哪些”,我必须提供其他选项。 3. **生成相关问题**:在末尾生成相关问题。 4. **引用标识**:在回答中引用段落时添加引用标识。 例如,在描述nvm时,可以说:“如引用[1]所述,nvmNode.js版本管理工具,允许轻松切换不同版本。[^1]” 然后,介绍其他工具: - **n**:是一个简单的工具,通常通过npm安装。 - **volta**:现代的版本管理器。 - **nvs**:适用于Windows、macOSLinux。 - **fnm**:快速且写入在Rust中。 由于引用中没有这些,我可以说我知识库中的信息。 最终回答: - 结构化清晰。 - 使用中文。 生成相关问题: - 类似于示例中的问题列表。 大纲: 1. 开头:确认用户的问题,并简述nod版本管理工具。 2. 详细介绍nvm(基于引用)。 3. 介绍其他工具。 4. 总结。 5. §§相关问题§§ 在介绍nvm时,引用具体引用: - 例如,“nvm允许维护多个node版本并存,轻松切换版本。[^1]” - “在Windows系统下,可以使用nvm-windows工具。[^2]” - “常用命令包括nvm list查看安装版本,nvm use切换版本等。[^3][^4]” - “安装后可能需要配置镜像地址。[^5]” 然后,对于其他工具: - n: 执行 `npm install -g n` 然后使用命令如 `n latest` 或 `n lts`。 - volta: 安装后可以锁定项目特定版本。 - nvs: 支持多种平台。 - fnm: 速度快。 最后,相关问题: 1. 如何安装使用nvm的具体步骤? 2. nvm与其他工具如volta相比有什么优缺点? 3. Node版本管理工具在实际项目中的应用场景是什么? </think> ### Node版本管理工具概述 Node.js版本管理工具主要用于在不同项目间轻松切换隔离Node.js版本,防止版本冲突。根据您的引用内容,nvmNode Version Manager)是最常见的工具之一,尤其适合于需要在多个版本间切换的场景。例如,引用[1]提到nvm允许维护多个node.js版本并存,简化开发环境配置[^1]。引用[2]强调在Windows系统下,nvm-windows提供了兼容支持,便于管理项目依赖特定版本的Node.js[^2]。引用[3]至[5]则详细描述了nvm的命令行操作,如安装、切换、卸载版本及配置镜像地址等[^3][^4][^5]。但除了nvm之外,还有其他几种流行的Node版本管理工具。 #### 除nvm之外的Node版本管理工具 虽然nvm是主流选择,但其他工具各有优缺点,适用于不同场景: 1. **n**: - 一个轻量级工具,通过npm全局安装即可使用。 - 优点:安装简单(执行 `npm install -g n`),命令简洁(如 `n latest` 安装最新版本,`n lts` 安装LTS版本)。 - 缺点:不支持Windows原生环境(需通过WSL或Cygwin),且功能相对基础,缺少高级配置选项。 2. **volta**: - 现代工具,强调速度项目级版本锁定。 - 优点:自动检测项目所需Node版本并切换,支持跨平台(Windows、macOS、Linux),安装后可通过 `volta install node@<version>` 快速设置。 - 缺点:社区生态较新,部分旧项目兼容性可能不如nvm。 3. **fnm (Fast Node Manager)**: - 高性能工具,基于Rust开发。 - 优点:启动速度快(比nvm快数倍),兼容nvm命令语法(如 `fnm use <version>`),支持.env文件自动切换。 - 缺点:安装需依赖Rust环境,对初学者稍复杂。 4. **nvs (Node Version Switcher)**: - 跨平台工具,支持Windows、macOSLinux。 - 优点:可通过PowerShell或Bash集成,使用 `nvs add <version>` 安装版本,提供远程版本列表查询。 - 缺点:用户基数较小,文档资源较少。 #### 总结 - **nvm** 是最成熟广泛使用的工具,特别适合多版本切换场景,如引用[5]提到安装后需配置镜像地址以提高下载速度[^5]。 - 其他工具如 **n**、**volta**、**fnm** **nvs** 提供了替代方案,尤其在速度、跨平台或项目隔离方面有优势。选择时需考虑系统平台、项目需求个人偏好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值