在用过 windows-nvm 和 volta 后,又发现了一个新的 node 版本管理工具,试用了一段时间后感觉是目前我所用过的最优秀的 Node 版本管理工具。
首先我想先说说为什么放弃一些 “好用” 的 Node 版本管理工具,陈述一下存在的问题
Volta 的问题#
-
全局看不到东西
我用 antfu 的 taze 和 @antfu/ni 快速升级项目依赖,如果全局下有 pnpm 这个包 (能通过
npm list -g --depth 0
看见),我这样配合一路回车就能快速升级依赖,但是 volta 在全局下不止 pnpm,yarn 也看不见,taze 就会提示我你可能没有安装 pnpm、yarn, 是否全局安装?就给我的一路回车这个行为中断了,次数多了这个糟糕的中断带来的割裂感被无限放大 -
和 pnpm 的契合的不够好
目前常用的三个软件包管理器,npm、yarn、pnpm, 在这三者中 pnpm 的体验又是最好的,但 volta 对 pnpm 的支持目前只停留在 “实验性” 支持,这个有些不尽人意
-
和一些 npm 库检查工具契合度糟糕
比如用于检查项目依赖版本情况的npm-check-updates、用于自动调用包管理器命令的ni, 这些好用的东西都对 volta 有过一些错误报告至今未解决 (错误报告、相关 issue)
-
缓慢的更新速度
虽然 GitHub 可以观察到一直在提交,但上次更新 release 在 2023 年 1 月,也是这一点促使了我去寻找代替品
-
没有卸载功能
使用 volta 将 18.18.0 升级到 18.19.0, 他的行为就是再给你装一个新的,如果你比较喜欢跟着版本更新,电脑里将会有很多类似的版本 (你当然可以手动去目录删除,但是有些原始不是吗)
nvm 的问题#
- nvm 并没有 Windows 版本,Windows 上使用的叫做
nvm-windows
nvm-windows 的问题#
- 不支持根据项目自动切换 Node 版本,也就是说需要在切换项目的时候去使用命令手动切换 Node 版本,作者也表示不会在这个项目中提供支持,作者原话在这个链接中可以看到
- 虽然作者表示不会在这个项目中添加自动切换,但是还是说启动了一个新的项目,用于改善这一问题,只是这一项目还未完成,更多信息可以在链接中看到https://github.com/coreybutler/nvm-windows/wiki/Runtime
pnpm 管理 Node 版本的问题#
-
pnpm 也是可以管理 Node 版本的,通过脚本安装 pnpm
iwr https://get.pnpm.io/install.ps1 -useb | iex
,然后使用
pnpm env use --global 18
这样管理 Node, 但在使用了几个小时候就放弃了,目前还是有挺多 bug 的,无法日常使用
本文主角 - nvm desktop#
nvm desktop是一个以可视化界面操作方式管理多个 Node 版本的桌面应用,有以下优势
- 自动根据项目切换 Node 版本,人工设置一次,后续无需干预,并不需要后台运行着软件
- 基于 electron, 多端表现高度一致
- 引擎由nvmd-command提供,Rust 编写
- 可视化操作更易于上手
- 保留了 nvm 命令行操作,只是将命令从
nvm xxx
改为了nvmd xxx
- 没有那么多水土不服的问题
基于以上优点,在多人的团队协作中,这个 nvm desktop 是一个比较好的 Node 版本管理解决方案
软件截图#
列出所有可供使用的 Node 版本,支持换阿里源
管理已经安装的 Node 版本
为项目指定 Node 版本,不指定的则为全局 Node 版本
客户端下载链接#
https://github.com/1111mp/nvm-desktop/releases/latest
这个软件并没有什么需要注意的,但是因为一些玄学问题,我建议你卸载干净电脑中的 Node, nvm, Volta 之类的软件,重启电脑后再安装 nvm-desktop
如果你是从其它管理工具换过来的#
建议检查自己设备中的环境变量,一些工具卸载后依旧会残留环境变量在个人设备中,可能出现预期之外的错误,建议进行清理 (比如装过 Volta, 再装 npm-check-updates, 你会因为这行代码被告知禁止检查全局)。