安利下 fnm(Fast Node Manager)

2023-04-19 03:39:43 +08:00
 dcsuibian

最近遇到了一个问题,有一个项目用 Node.js 14 可以正常运行,用 Node.js 18 就不行。而我写 blog 用的 Hexo 又推荐使用较新的 Nodejs 版本。因此重新去研究了下目前的 Node.js 管理工具,目前共有nvmnvsnfnm这四款(其实算上nvm for windows是五款),选择了fnm

首先,跨平台支持,三大操作系统全支持。我个人有一台高性能台式 pc 、一台 mbp ,所以非常希望能在不同的平台上用同样的命令。而nvmn都是只支持 mac/linux 的,nvm fow windows的命令也跟nvm的不一样,只是借了个名字。而 fnm 则可以用同样的方式使用。

其次,支持.node-version.nvmrc,可以自动切换版本。

如图所示,我默认使用的是 Node.js 18 ,而切换到项目目录后可以自动切换成 Node.js 14 ,非常好用。(不过再 cd 到外面不会改变 Node.js 版本,除非遇到新的.node-version.nvmrc)这个我在 windows 上也试过了,可行。而nvm for windows 似乎由于实现机制的问题,不支持.nvmrc,需要手动切换,而且切换时会需要两次 UAC 确认。

第三,安装方便。fnm 整体就只有单个可执行文件。

安装总共就两步。

  1. 下载解压,并将目录添加到PATH环境变量中

  2. 根据 readme 中的Shell Setup修改下 profile 文件。

第四,速度快(用 Rust 编写),简单。

个人其实对速度倒是不在乎,毕竟切换频率不会很高,但快一点也没坏处。而且 fnm 整体确实简单,除了安装外,本身的体积也非常小,命令也非常简单。

另外,其实我也试过不使用 Node.js 版本管理工具,直接使用绝对路径。

结果如图所示,node 本身还是正常的,但 npm 就不太正常了。

4911 次点击
所在节点    程序员
38 条回复
cydysm
2023-04-19 04:13:54 +08:00
我也在半年前换到了 fnm 了
ysc3839
2023-04-19 04:23:46 +08:00
我目前也在用 fnm 。我在 Windows 上命令行环境是使用 MSYS2+zsh ,nvm 好像不支持 MSYS2 ,在 WSL1 上性能也非常差。nvm for windows 之前 1.1.9 版本和 1.1.10 隔了近一年才更新,同时不支持 zsh 的 Tab 补全,命令语法也和别的不统一。“n”好像是依赖 Node.js 的?所以最佳选择就是 fnm 了,跨平台、支持 zsh 。
ochatokori
2023-04-19 08:58:16 +08:00
旧系统装了 nvm 懒得换了,新系统都换 fnm 了
gzf6
2023-04-19 09:12:05 +08:00
volta
yzld2002
2023-04-19 09:14:28 +08:00
fnm 还有个好处是可以方便地在 M1 的 mac 上安装 x86 版本的 node
clijiac
2023-04-19 09:28:52 +08:00
一直用的 nvs, 试试这个
way2explore2
2023-04-19 09:50:33 +08:00
是,确实很不错,用了一年多了,最直观的感受就是,比 nvm 快!
lovedoing
2023-04-19 10:25:30 +08:00
不支持安装 arm64 版本的 node 14
lasy
2023-04-19 10:59:25 +08:00
volta +1 ,和 fnm 一样,同样是 rust 写的。volta 除了可以管理 node 版本,还可以管理包管理器版本,限制使用的包管理器等等,功能更加强大
houshuu
2023-04-19 11:13:16 +08:00
可以试试 volta
xujiahui
2023-04-19 11:40:29 +08:00
在用 volta ,但是不知道怎么删除已安装 node 历史版本
zp324511
2023-04-19 12:09:53 +08:00
之前一直用 Nodist
kkocdko
2023-04-19 12:32:22 +08:00
看了下确实挺不错。不过我也推荐楼主尝试一下将项目迁移到最新版本 Node.js 。一般来说造成不兼容也就那么几个原因,废弃的 API 或者 NAPI ,可能使用 NAN binding 等等,一般来说解决起来并不麻烦,我已经迁移了有那么几次了 hhhhh
Hyoban
2023-04-19 12:48:31 +08:00
volta 不支持 corepack
MAGA2022
2023-04-19 12:59:58 +08:00
asdf 好用
cosmain
2023-04-19 13:33:36 +08:00
@lovedoing
> 不支持安装 arm64 版本的 node 14
我看 arm64 18/19 是可以的,老版本不支持?
zhzy
2023-04-19 13:55:44 +08:00
之前用过一段时间是挺不错的,可惜和 nushell 兼容有点问题
lovedoing
2023-04-19 14:04:58 +08:00
@cosmain #16 好像 16 以下的用 nvm ,fnm 之类的安装都是 x86 版本,但是 brew 安装的 node@14 是 arm64 版本的
mcfog
2023-04-19 14:36:57 +08:00
复议 asdf ,对市面上所有此类工具形成降维打击
lzgshsj
2023-04-19 15:37:07 +08:00
volta +n

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/933615

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX