现在的前端研发都离不开nodejs,每天都要与nodejs打交道,这也引出了一些问题,同一个项目,不同的node版本可能会导致项目无法正常运行,所以就需要针对项目的nodejs版本进行切换。市面上也出现了nodejs版本管理工具,例如nvm或者fnm。
nvm和fnm作为流行的nodejs版本管理工具,可以在同一台计算机上同时安装和管理多个nodejs版本,以适应不同的项目需求。
为什么选择fnm?
fnm和nvm两款工具的功能都差不多,都用来管理node版本,选择fnm主要原因是快,由于它是用Rust语言编写的,它比nvm快很多,无论是安装、切换,还是命令执行等等。另一个原因是跨平台,fnm可以在macOS、Windows和Linux上运行,而nvm只支持macOS和Linux。
fnm安装
fnm安装方法很简单,照着官方的文档即可,具体细节可以查阅fnm文档
macOs安装
curl -fsSL https://fnm.vercel.app/install | bash
window安装
scoop install fnm
fnm的一些常用命令如下:
fnm install node
:安装最新的Node.js版本fnm install 16.6.2
:安装指定的Node.js版本(16.6.2)fnm use 16.5.0
:切换到已经安装的某个版本(16.5.0)fnm alias default 16.6.2
:设置默认的Node.js版本(16.6.2)fnm ls-remote
:列出所有可用的Node.js版本fnm ls
:列出所有已经安装的Node.js版本fnm uninstall 16.5.0
:卸载某个已经安装的Node.js版本(16.5.0)
自动切换nodejs
如何实现在项目打开的时候自动切换nodejs版本,操作很简单,直接在项目根目录下新建一个.node-version
文件即可,把需要限制的nodejs版本的数字写入到该文件,例如 18.2.0
配置完还不能实现自动切换nodejs版本,需要在shell配置文件末尾新增fnm env --use-on-cd
不同的shell相关的配置文件加入即可,例如:
Bash,在.bashrc
文件末位新增
eval "$(fnm env --use-on-cd)"
PowerShell,在Microsoft.PowerShell_profile.ps1
文件末位新增
fnm env --use-on-cd | Out-String | Invoke-Expression
不同的PowerShell版本有不同目录,找到后添加即可,分别是
~\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
~\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
其他配置可以参考上面的fnm官方地址查阅。
不同项目自动切换不同的node版本
实际场景中,我们需要在不同的项目使用不同的node版本,比如旧的项目使用 node 16,新项目使用 node 20,fnm可以自动帮我们实现这些功能。只需要在项目根目录下创建一个文件 .node-version
,直接输入 20.0.0
,在进入目录 fnm 就会把 node 自动切换成 20.0.0
的版本。