赞
踩
前端技术日新月异,始终朝气蓬勃,新的框架层出不穷,有时候 Node.js 几乎每周都会发布新版本,现在更出现了 Bun 和 Deno 等 Node.js 的有力竞争者。
这是你这么做之前首先要明确的问题。
也许你遇到过以下情况:
v22.x
所带来的新特性v18.x
v12.x
、保守派用 v14.x
、激进派用 v18.x
,突然某天老板让我去维护守旧派负责的项目,运行后由于Node.js版本不一致直接报错这个时候就轮到版本管理工具大展拳脚的时候了。
我们可以从 Node.js 官网看到官方推荐的版本管理工具:
Node.js — Installing Node.js via package manager (nodejs.org)
其中,最流行的是 nvm、n、fnm。(由于 n 和 nvm 功能和指令相似,但不支持windows,所以这次不对其做评测)
此外从下面这篇 v2ex 贴中大家还提到了一些其他的版本管理工具/方案:
大家在开发过程中是如何管理多个项目不同的 NodeJS 版本的? - V2EX
包括:volta、asdf、webstorm
下面我们来详细对比一下
nvm 已经是大家熟知的版本管理工具了,但仍然在此挂一下 Github 地址:
nvm-sh/nvm: Node Version Manager(Linux/Mac)
值得一提的是,nvm 的 Linux/Mac 版本和 Windows 版本是两个功能相似的由不同开发者并行开发的独立工具。
使用方法也非常简单:
- # 查看可用版本
- nvm list available
- # 安装指定版本
- nvm install 16
- # 使用指定版本
- nvm use 16
- # 列出本机已安装的全部版本列表(带*的为当前全局默认版本)
- num list
当项目繁多复杂时,问题也随之而来,使用 nvm 虽然完成了多版本管理,但是默认版本只能有一个,所以很多时候,在用 vscode 打开不同项目的时候,还需要用 nvm use
来切换不同的版本使用。
显然经常这样操作很麻烦,也容易忘记什么项目用什么版本,而且还有一个致命问题——无法同时运行两个不同版本的项目。
此前我也一直苦于习惯了 nvm 的顺滑操作,却没办法在切换项目时自动切换版本且同时运行的问题,但如今一个新工具的诞生解决了这个问题:
1111mp/nvm-desktop(提示:使用nvm-desktop无需安装nvm)
nvm-desktop 这个项目目前 star 还不多,但提供了跨平台的 nvm 图形管理界面,使用 electron 开发,且底层使用 rust 编写的命令行工具 nvmd-command 提供了智能识别项目 node 版本,自动切换和同时运行多个版本的能力。
根据 nvm-desktop 开发者解释以及我的深度体验,其可以为项目单独指定你想要的 Node 的版本。
或者你也可以通过命令行为你的项目指定nodejs版本 nvmd use node_version --project
。
这样做会在项目的根目录下会添加一个文件:.nvmdrc
,内容为你选择的 Node 的版本号,如果未添加此文件则加载为全局设置的 Node 的版本号。
且如果团队成员都安装了 nvm-desktop 则他们也可以在进入项目时无缝切换到指定版本。
fnm 是一款快速简单的 Node.js 版本管理器,使用 Rust 构建。其 Github 地址:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。