最近遇到了一个问题,有一个项目用 Node.js 14 可以正常运行,用 Node.js 18 就不行。而我写 blog 用的 Hexo 又推荐使用较新的 Nodejs 版本。因此重新去研究了下目前的 Node.js 管理工具,目前共有nvm、nvs、n、fnm这四款(其实算上nvm for windows是五款),选择了fnm。
首先,跨平台支持,三大操作系统全支持。我个人有一台高性能台式 pc 、一台 mbp ,所以非常希望能在不同的平台上用同样的命令。而nvm和n都是只支持 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 整体就只有单个可执行文件。

安装总共就两步。
-
下载解压,并将目录添加到
PATH环境变量中 -
根据 readme 中的Shell Setup修改下 profile 文件。
第四,速度快(用 Rust 编写),简单。
个人其实对速度倒是不在乎,毕竟切换频率不会很高,但快一点也没坏处。而且 fnm 整体确实简单,除了安装外,本身的体积也非常小,命令也非常简单。
另外,其实我也试过不使用 Node.js 版本管理工具,直接使用绝对路径。

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


