Lainbo

Lainbo's Blog

If you’re nothing without the suit, then you shouldn't have it.
github
email
follow

nvm-desktop的使用

在用过 windows-nvm 和 volta 后,又发现了一个新的 node 版本管理工具,试用了一段时间后感觉是目前我所用过的最优秀的 Node 版本管理工具。

首先我想先说说为什么放弃一些 “好用” 的 Node 版本管理工具,陈述一下存在的问题

Volta 的问题#

  1. 全局看不到东西

    我用 antfu 的 taze 和 @antfu/ni 快速升级项目依赖,如果全局下有 pnpm 这个包 (能通过npm list -g --depth 0看见),我这样配合一路回车就能快速升级依赖,但是 volta 在全局下不止 pnpm,yarn 也看不见,taze 就会提示我你可能没有安装 pnpm、yarn, 是否全局安装?就给我的一路回车这个行为中断了,次数多了这个糟糕的中断带来的割裂感被无限放大

  2. 和 pnpm 的契合的不够好

    目前常用的三个软件包管理器,npm、yarn、pnpm, 在这三者中 pnpm 的体验又是最好的,但 volta 对 pnpm 的支持目前只停留在 “实验性” 支持,这个有些不尽人意

  3. 和一些 npm 库检查工具契合度糟糕

    比如用于检查项目依赖版本情况的npm-check-updates、用于自动调用包管理器命令的ni, 这些好用的东西都对 volta 有过一些错误报告至今未解决 (错误报告相关 issue)

  4. 缓慢的更新速度

    虽然 GitHub 可以观察到一直在提交,但上次更新 release 在 2023 年 1 月,也是这一点促使了我去寻找代替品

  5. 没有卸载功能

    使用 volta 将 18.18.0 升级到 18.19.0, 他的行为就是再给你装一个新的,如果你比较喜欢跟着版本更新,电脑里将会有很多类似的版本 (你当然可以手动去目录删除,但是有些原始不是吗)

nvm 的问题#

  1. nvm 并没有 Windows 版本,Windows 上使用的叫做nvm-windows

nvm-windows 的问题#

  1. 不支持根据项目自动切换 Node 版本,也就是说需要在切换项目的时候去使用命令手动切换 Node 版本,作者也表示不会在这个项目中提供支持,作者原话在这个链接中可以看到
  2. 虽然作者表示不会在这个项目中添加自动切换,但是还是说启动了一个新的项目,用于改善这一问题,只是这一项目还未完成,更多信息可以在链接中看到https://github.com/coreybutler/nvm-windows/wiki/Runtime

pnpm 管理 Node 版本的问题#

  1. pnpm 也是可以管理 Node 版本的,通过脚本安装 pnpm

    iwr https://get.pnpm.io/install.ps1 -useb | iex ,

    然后使用pnpm env use --global 18 这样管理 Node, 但在使用了几个小时候就放弃了,目前还是有挺多 bug 的,无法日常使用

本文主角 - nvm desktop#

nvm desktop是一个以可视化界面操作方式管理多个 Node 版本的桌面应用,有以下优势

  1. 自动根据项目切换 Node 版本,人工设置一次,后续无需干预,并不需要后台运行着软件
  2. 基于 electron, 多端表现高度一致
  3. 引擎由nvmd-command提供,Rust 编写
  4. 可视化操作更易于上手
  5. 保留了 nvm 命令行操作,只是将命令从nvm xxx 改为了nvmd xxx
  6. 没有那么多水土不服的问题

基于以上优点,在多人的团队协作中,这个 nvm desktop 是一个比较好的 Node 版本管理解决方案

软件截图#

列出所有可供使用的 Node 版本,支持换阿里源

image

管理已经安装的 Node 版本

image

为项目指定 Node 版本,不指定的则为全局 Node 版本

image

客户端下载链接#

https://github.com/1111mp/nvm-desktop/releases/latest

这个软件并没有什么需要注意的,但是因为一些玄学问题,我建议你卸载干净电脑中的 Node, nvm, Volta 之类的软件,重启电脑后再安装 nvm-desktop

如果你是从其它管理工具换过来的#

建议检查自己设备中的环境变量,一些工具卸载后依旧会残留环境变量在个人设备中,可能出现预期之外的错误,建议进行清理 (比如装过 Volta, 再装 npm-check-updates, 你会因为这行代码被告知禁止检查全局)。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。