Published on

自动切换nodejs版本的解决方案

Authors

  众所周知nodejs生态异常活跃,nodejs能满足我们大多数场景的需求。但对于历史项目来说,现行版本可能不太适合他们,会导致异常,这时候需要把nodejs切换到适合当前项目的版本。可用的工具有: nvm(macOS)、nvm-windows、nvs(跨平台nodejs版本管理器)、N等。但是如果不同项目要求不同版本的nodejs,频繁手动切换nodejs版本导致版本管理困难。有没有自动切换nodejs的方案呢,答案是有的。

使用vscode插件vsc-nvm + nvm

  • 安装vsc-nvm 安装地址:vsc-nvm,直接点安装就可以。

  • 安装nvm macOS版本:nvm,运行命令:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

如果安装了wget:

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
  • 新建.nvmrc文件 在项目的根目录下新建.nvmrc文件,并添加一下内容
18.19.1

此时用vscode加载项目并打开终端, vsc-nvm 会在终端执行 nvm use 命令,该命令会读取 .nvmrc 文件的内容,并且把nodejs版本设置为相应的版本。 nvm 仅支持 unix , macOS , 和 windows的 WSL,在 windows上需要使用 nvm-windows. 但 nvm-windows有个问题:nvm use 不能识别到.nvmrc文件,而且 nvm-windowsnvm 切换nodejs版本会作用到全局,这对于维护多个不同nodejs版本要求的项目时会变得异常吃力。 这里我们使用另一款nodejs版本管理插件:nvs

它以下几个优点:

  • 跨平台,同时支持WindowsmacOS平台,保证了命令和表现得一致性。
  • 命令强大,可以满足大多数场景的需求。
  • 最重要的一点,它支持默认nodejs版本,也可以在特定项目下指定nodejs版本。

nvs + powershell/终端方案

  • 安装nvs
choco install nvs

如果没有安装choco可以去官网安装,安装方法不再赘述:nvs

  • 新建.nvmrc文件

在项目根目录下新建.nvmrc文件,并写入想要的nodejs版本,如:16

  • 配置端口自动运行脚本命令

用管理员身份打开powershell,输入:

Test-Path $Profile

如果返回true则跳过下一步,返回false执行以下命令:

New-Item –Path $Profile –Type File –Force

使用notepad打开配置文件:

notepad $Profile

在文件里添加以下命令:

if (Test-Path -Path ".\.nvmrc") {
	nvs use $(Get-Content .nvmrc).replace( 'v', '' )
}

保存并关闭

保存成功后,只要打开powershell就会自动运行上面的脚本,它会自动检测当前根目录是否存在.nvmrc文件,存在则会自动切换nodejs为.nvmrc配置的版本。

如果powershell阻止配置的命令,则使用管理员身份运行以下命令:

Set-ExecutionPolicy RemoteSigned

阅读提示并输入 Y 以设置新的执行策略。

powerShell的自动化设置原理同macOS中配置 ~/.bash_profile

这样实现不同平台不同项目自动切换nodejs版本的需求。