0

0

Nodejs 版本管理器终极指南:NVM、NVS、fnm、Volta 和 asdf |第 1 部分

DDD

DDD

发布时间:2024-09-12 20:21:11

|

1140人浏览过

|

来源于dev.to

转载

介绍

嘿!如果您曾经使用 node.js 进行过开发,您就会明白,对于项目来说,经常需要使用不同的版本。也许一个项目可以在版本 10 上运行,另一个项目可以在版本 14 上运行,而一个新项目需要最新版本,比如 20。随着每个新版本的新功能的出现,一系列新的挑战也随之出现。这些是与库和框架的兼容性、新功能的测试以及现有项目的稳定性。

当我同时处理多个项目时,我自己也遇到过这个问题。当每个项目都需要其版本时,看似非常简单的任务(安装 node.js)变得混乱。在本文中,我将告诉您如何使用 nvm、nvs、fnm、volta 和 asdf 等 node.js 版本管理工具解决这个问题。我将描述它们的工作原理,列出优点和缺点,并为您提供我的个人经验,以帮助您选择最适合您需求的节点版本管理器。

为什么版本管理对开发人员很重要?

与库和框架的兼容性

node.js 本身正在快速发展,其工具生态系统也在快速发展。新的库、框架和版本在使用不同的 node.js 版本时需要很大的灵活性。某些视图框架可能仅与特定的 node.js lts 版本兼容,必须根据正在开发的项目切换到该版本。在不同的 node.js 版本之间切换将有助于避免兼容性问题并保持代码顺利运行。

考虑一下您正在处理一些旧项目,该项目取决于库的特定版本。您同时根据最新版本的 node.js 运行一些新项目,因为它使用仅在最新版本中可用的功能。新版本的 node.js 可能包含与这些库版本不兼容的功能,这将导致应用程序性能错误或不稳定。

有一天,我陷入了这样的困境,我需要手动安装不同版本的 node.js,使用它,然后重新安装另一个版本,依此类推。相信我,那是一场噩梦。然后,我突然意识到,如果没有节点版本管理器实用工具,我将无法做任何事情。

新功能测试

软件开发就是不断测试和实现新功能。 node.js 的每个新版本都会向开发人员提供更多语言和平台功能,例如增强的异步编程支持、模块系统的改进以及新的 api。然后,这些功能将在实际项目中进行测试,以确定它们的有效性以及是否将它们实现到主应用程序中。

但是如果你当前的项目在旧版本的 node.js 下运行稳定,而升级 node.js 后可能会出现问题怎么办?

这通常意味着检查 master 分支中的新功能,或使用新 node.js 版本的项目副本。幸运的是,版本管理工具允许我在不同版本之间切换,并且主分支不会出现故障。

确保稳定和安全

稳定性和安全性是任何项目的主要因素。在旧版本的 node.js 中,可能会存在一些错误,这些错误会在新版本中得到修复。如果应用程序依赖于支持新平台版本升级的旧库,那么升级到最新版本是相当危险的。

版本控制 node.js 允许您安全地升级平台版本,同时保留出现问题时回滚的可能性,从而帮助开发人员保持应用程序稳定且免受漏洞影响。

管理 node.js 版本的方法

Nodejs 版本管理器终极指南:NVM、NVS、fnm、Volta 和 asdf |第 1 部分

标准安装

如果您是 node.js 的新手,您可能已经从其官方网站下载并安装了它。当您只需要一个版本的 node.js 时,这是最直接的方法。您下载安装程序,按照说明操作,瞧 — node.js 就在您的计算机上。

但是想象一下,您正在处理多个项目,并且所有这些项目都需要某些特定版本的 node.js。例如,您在 node.js 10 上有一些旧项目,在 node.js 20 上有一些新项目。不断地重新安装 node.js 太耗时且不方便。

node.js 版本管理工具

有很多用于管理 node.js 版本的工具。在本文中,我将讨论五个流行的选项:nvm(节点版本管理器)、nvs(节点版本切换器)、fnm 或快速节点管理器、volta 和 asdf。所有这些都有其管理版本的方式和功能,可能适用于各种任务和团队。

这些版本管理器将自动化管理流程,管理版本的一致性,并避免兼容性问题,帮助您选择适合您需求的工具。

与 ci/cd 工具集成

Nodejs 版本管理器终极指南:NVM、NVS、fnm、Volta 和 asdf |第 1 部分

Toolplay
Toolplay

一站式AI应用聚合生成平台

下载

当您开始在团队中工作时,版本管理变得更加重要。每个开发人员都可能拥有自己的 node.js 版本,这在不同的开发和部署阶段可能会出现很大的问题,因为可能会出现不同的错误。在自动化扮演着重要角色的大型项目和团队中,此类 node.js 版本管理工具可以集成到 ci/cd 流程中。

nvm 等工具可以集成到 ci/cd 流程中,允许每个构建都使用所需版本的 node.js,而无需手动干预,确保每个团队成员都使用正确的 node.js 版本来执行其任务。这有助于保持不同环境(例如开发环境、测试和生产)的稳定性和一致性。

node.js 版本管理工具概述

现在,管理不同 node.js 版本的不同工具各有优缺点,我将尝试解释每种工具最适合什么情况。

nvm(节点版本管理器)

nvm 是节点版本管理器的缩写。它是最古老且仍然非常流行的 node.js 版本管理器之一。 nvm 由 tim caswell 于 2010 年创建,目前仍在积极维护中。

Nodejs 版本管理器终极指南:NVM、NVS、fnm、Volta 和 asdf |第 1 部分

nvm 将每个 node.js 版本下载到其自己的独立目录中,位于 ~/.nvm/versions/node/。当您使用 nvm use 在版本之间切换时,它会更新您的 $path 环境变量以指向适当的目录。

如何安装和使用

macoslinux 上安装:

要在 macos 和 linux 上安装 nvm,请按照以下步骤操作:

  1. 打开终端并输入以下内容:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash


wget -qo- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

这将从官方 nvm github 存储库下载并运行 nvm 安装脚本,nvm 将安装在您的系统上。安装完成后,您可以使用以下命令验证 nvm 是否已安装:
nvm — 版本

如果一切顺利,您应该会看到 nvm 版本。

windows 安装:

  1. 从其 github 存储库下载 nvm-windows 安装程序。
  2. 运行安装程序并按照屏幕上的说明进行操作,确保选择正确的安装路径。

在安装过程中,它会自动在您的配置文件中设置 nvm 配置。如果您使用 zsh,则为 ~/.zshrc;或者如果您使用的是 bash,则为 ~/.bashrc、~/.bash_profile 或其他配置文件。

如果这没有自动发生,请自行将 nvm 配置添加到配置文件中:

export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

使用非易失性存储器:

  • 列出可用的 node.js 版本:nvm ls-remote
  • 安装最新的 node.js 版本:nvm install node
  • 安装特定版本:nvm install 14.17.0 或 nvm install 14
  • 版本切换:nvm use 14.17.0 或 nvm use 14
  • 设置默认版本:nvm alias default 18
  • 查看已安装版本:nvm ls
  • 来自 .nvmrc 的版本:如果您的项目目录包含指定所需 node.js 版本(例如 16.13.0 或 20)的 .nvmrc 文件,您可以使用 nvm 自动切换到该版本。

nvm的优点:

  • 安装和使用:几分钟内完成,此后,处理各种 node.js 版本非常容易。
  • 灵活性:它允许人们在一台设备上运行或安装多个 node.js 版本而不会发生冲突。
  • 兼容性: nvm 适用于大多数类 unix 系统,并可在 macos 或 linux 上运行。对于 windows,有一个名为 nvm-windows 的端口。
  • 支持 .nvmrc 文件:此文件允许您在进入项目目录时自动切换到所需的 node.js 版本。
  • 社区和文档: 庞大的用户群和良好的文档使 nvm 成为值得信赖的选择。

nvm的缺点:

  • 性能:有时,nvm 可能比其他工具慢,尤其是在版本之间频繁切换时。
  • 手动管理:对于一些开发者来说,手动切换版本可能看起来不方便,特别是在需要自动化的情况下。
  • windows 上的不便:如果您在 windows 上工作,通过 wsl 使用 nvm 可能会不方便。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

514

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

244

2023.07.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

298

2023.08.03

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

5306

2023.08.17

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

481

2023.09.01

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

212

2023.09.04

Js中concat和push的区别
Js中concat和push的区别

Js中concat和push的区别:1、concat用于将两个或多个数组合并成一个新数组,并返回这个新数组,而push用于向数组的末尾添加一个或多个元素,并返回修改后的数组的新长度;2、concat不会修改原始数组,是创建新的数组,而push会修改原数组,将新元素添加到原数组的末尾等等。本专题为大家提供concat和push相关的文章、下载、课程内容,供大家免费下载体验。

218

2023.09.14

js截取字符串的方法介绍
js截取字符串的方法介绍

JavaScript字符串截取方法,包括substring、slice、substr、charAt和split方法。这些方法可以根据具体需求,灵活地截取字符串的不同部分。在实际开发中,根据具体情况选择合适的方法进行字符串截取,能够提高代码的效率和可读性 。

219

2023.09.21

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

391

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 8万人学习

Git 教程
Git 教程

共21课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号