使用 NVM 设置节点版本,如果不可用则安装。

Set node version with NVM or install if not available.

我正在尝试向我的 bash 配置文件添加一些内容,将我的节点版本设置为特定版本,如果未安装该节点版本,请安装它。到目前为止我所拥有的是:

. /usr/local/opt/nvm/nvm.sh
if [[ $(nvm use v6.9.1) == "" ]]; then
  nvm install v6.9.1
fi

但是,问题是 $(nvm use v6.9.1) 在子shell 中是 运行 而我的节点版本没有切换。

a) 有什么方法可以让$(nvm use v6.9.1) 运行 在现在的shell?

b) 有更好的方法吗?

以前我只是 运行ning nvm install v6.9.1 但这有点慢,这是一个问题,因为每次我打开一个新终端时它 运行s。

谢谢马特!

你试过 grepping nvm ls 吗?

. /usr/local/opt/nvm/nvm.sh
if [[ $(nvm ls | grep v6.9.1) == "" ]]; then
  nvm install v6.9.1
else
  nvm use v6.9.1
fi

对您来说,它比使用 nvm install v6.9.1 快吗?

编辑:您还可以设置默认始终加载的默认版本。你可以通过 运行 nvm alias default 6.9.1.

您可以尝试将脚本更改为:

if [[ $(node -v) != "v6.9.5" ]]; then
  nvm install v6.9.5
  nvm alias default v6.9.5
fi

这会花一点时间,但只是第一次

这行得通。如果use失败,则执行install.

#!/bin/sh

nvm use 14.18.1 || nvm install 14.18.1

# or if you don't need the warning
nvm use 14.18.1 2>/dev/null || nvm install 14.18.1

我有一个 bash 别名,我为此使用了多个版本:

alias nvmuse='nvm use || nvm install $(cat .nvmrc)'

在当前版本的 nvm 中,nvm install 不会重新安装已安装的节点。

示例:

$ nvm install v16.0.4
v16.14.2 is already installed.

# The same if you have put the version in your project's .nvmrc
$ nvm install
v16.0.4 is already installed.

但是请注意,如果您指定了一个 不明确的 版本,例如 v16 并且 更新版本 v16 可用,然后 nvm 将下载并安装较新版本,忽略您的旧版本 v16。

$ node --version
v16.0.4
$ nvm install v16
Downloading and installing node v16.14.2...

因此,如果您始终希望成为 up-to-date 并拥有最新的安全补丁,那么指定 v16 是很好的选择。但最终你可能会安装很多版本的节点!

要只安装一个版本(以节省磁盘 space,或保留您之前使用 npm 全局安装的软件包)然后指定完整版本 v16.0.4