Nodejs 版本管理工具 nvm 介绍

2024-04-30 09:23:48 浏览数 (2)

NVM 是 NodeJS 开发环境的版本管理工具,可以方便的在同一台设备上进行多个node版本之间切换,本文记录相关信息。

简介

Node Version Manager(NVM) 是一种用于管理多个主动节点.js版本的工具。

Node.js平台,Node.js工具社区和Node.js库是快速移动的目标 - 在一个Node.js版本下可能有效的方法不能保证适用于另一个版本的Node.js。因此,用户需要一些方法在 Node 的多个版本之间切换。

NVM 允许用户:

  • 使用简单的命令在本地下载任何远程长期支持 (LTS) 版本的 Node.js。
  • 直接从命令行在 Node.js 的多个版本之间轻松切换。
  • 设置别名以轻松在不同下载版本的 Node.js之间切换。

nvm 安装

Windows

下载链接:https://github.com/coreybutler/nvm-windows/releases

Linux 脚本安装

官方 github: https://github.com/nvm-sh/nvm

需要安装好 curl 和 git 1 2sudo apt install git sudo apt install curl

1

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

下载后安装在 $HOME/.nvm 文件夹中。

12

$ nvm -v 0.39.7

打印出版本信息说明安装成功。

Linux 手动安装
  • 选择目录,下载项目:

12

cd ~/git clone https://github.com/nvm-sh/nvm.git .nvm

  • 进入项目目录,并切换最新版本:

12

cd ~/.nvmgit checkout v0.39.3

  • 激活nvm:

1

./nvm.sh

  • 使用nvm ls命令测试; 修改配置文件加入环境变量,否则重启系统后不能自动识别nvm命令;
  • 使用 geditvim 修改 ~/.bashrc~/.profile,执行命令如下:

12

sudo gedit ~/.bashrcsudo gedit ~/.profile

  • 在配置文件的末尾加入以下配置(注意:NVM_DIR对应的是自己真实存放nvm的目录):

123

export NVM_DIR="$HOME/.nvm"[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion" # This loads nvm bash_completion

  • 刷新配置文件,使配置生效:

12

source ~/.bashrcsource ~/.profile

  • 如出现nvm命令不识别的问题,原因可能是配置文件修改错误或未刷新配置文件。

使用方法

来自帮助文档

命令

含义

备注

nvm --help

显示帮助信息

–no-colors

抑制彩色输出

nvm --version

版本信息

nvm install [<version>]

下载并安装 <version>

nvm install -s

跳过二进制下载,仅从源代码安装

nvm install -b

跳过源下载,仅从二进制安装

–reinstall-packages-from=<version>

重新安装包

–lts

安装时,仅选择LTS(长期支持)版本

–lts=<LTS name>

安装时,仅从特定 LTS 系列的版本中选择

–skip-default-packages

安装时跳过default-packages文件(如果存在)

–latest-npm

安装后,尝试升级到给定节点版本上的最新工作 npm

–no-progress

禁用任何下载的进度条

–alias=<name>

安装后,将指定的别名设置为指定的版本。 (与:nvm 别名 <名称> <版本> 相同)

–default

安装后,将默认别名设置为指定的版本。 (与:nvm 别名默认 <版本> 相同)

nvm uninstall <version>

卸载一个版本

nvm uninstall --lts

使用自动 LTS(长期支持)别名“lts/*”卸载(如果可用)

nvm uninstall --lts=<LTS name>

使用提供的 LTS 行的自动别名进行卸载(如果可用)

nvm use [<version>]

修改 PATH 以使用 <版本>。如果可用,则使用 .nvmrc,并且省略版本。

–silent

静默

nvm exec [<version>] [<command>]

在 <版本> 上运行 <命令>。如果可用,则使用 .nvmrc,并且省略版本。

nvm run [<version>] [<args>]

使用 <args> 作为参数在 <version> 上运行 node。如果可用,则使用 .nvmrc,并且省略版本。

nvm current

显示当前激活的 Node 版本

nvm ls [<version>]

列出已安装的版本,匹配给定的 <version>(如果提供)

nvm list

nvm ls-remote [<version>]

列出可安装的远程版本,匹配给定的 <version>(如果提供)

nvm list available (Windows 下)

nvm version <version>

将给定描述解析为单个本地版本

nvm version-remote <version>

将给定描述解析为单个远程版本

nvm deactivate

撤消 nvm 对当前 shell 的影响

nvm alias [<pattern>]

显示以 <pattern> 开头的所有别名

nvm alias <name> <version>

设置名为 <name> 的别名,指向 <version>

nvm unalias <name>

删除名为 <name> 的别名

nvm install-latest-npm

尝试升级到当前节点版本上最新的工作“npm”

nvm reinstall-packages <version>

将 <version> 中包含的全局 npm 软件包重新安装到当前版本

nvm unload

从 shell 中卸载 nvm

nvm which [current | <version>]

显示已安装节点版本的路径。如果可用,则使用 .nvmrc,并且省略版本。

nvm cache dir

显示 nvm 缓存目录的路径

nvm cache clear

nvm 的空缓存目录

nvm set-colors []

使用格式“yMeBg”设置五种文本颜色。支持时可用。Color codes: r/R = red / bold red g/G = green / bold green b/B = blue / bold blue c/C = cyan / bold cyan m/M = magenta / bold magenta y/Y = yellow / bold yellow k/K = black / bold black e/W = light grey / white

示例:

12345678910111213

nvm install 8.0.0 Install a specific version numbernvm use 8.0 Use the latest available 8.0.x releasenvm run 6.10.3 app.js Run app.js using node 6.10.3nvm exec 4.8.3 node app.js Run `node app.js` with the PATH pointing to node 4.8.3nvm alias default 8.1.0 Set default node version on a shellnvm alias default node Always default to the latest available node version on a shellnvm install node Install the latest available versionnvm use node Use the latest versionnvm install --lts Install the latest LTS versionnvm use --lts Use the latest LTS versionnvm set-colors cgYmW Set text colors to cyan, green, bold yellow, magenta, and white

安装 nodejs 环境

  • 这里我安装 v18.20.2 版本的 node.js

12345678

$ nvm install v18.20.2 Downloading and installing node v18.20.2...Downloading https://nodejs.org/dist/v18.20.2/node-v18.20.2-linux-x64.tar.xz...############################################################################################# 100.0%Computing checksum with sha256sumChecksums matched!Now using node v18.20.2 (npm v10.5.0)Creating default alias: default -> v18.20.2

  • 查看当前安装版本

1234567891011121314151617

nvm list ──(一,4月29)─┘-> v18.20.2default -> v18.20.2iojs -> N/A (default)unstable -> N/A (default)node -> stable (-> v18.20.2) (default)stable -> 18.20 (-> v18.20.2) (default)lts/* -> lts/iron (-> N/A)lts/argon -> v4.9.1 (-> N/A)lts/boron -> v6.17.1 (-> N/A)lts/carbon -> v8.17.0 (-> N/A)lts/dubnium -> v10.24.1 (-> N/A)lts/erbium -> v12.22.12 (-> N/A)lts/fermium -> v14.21.3 (-> N/A)lts/gallium -> v16.20.2 (-> N/A)lts/hydrogen -> v18.20.2lts/iron -> v20.12.2 (-> N/A)

  • 使用刚刚安装的 node.js

1

$ nvm use node

  • 查看当前版本

12

$ nvm current v18.20.2

  • 配套的 npm 版本

12

$ npm -v 10.5.0

更换npm源

123456789

// 查询源npm config get registry// 更换淘宝源npm config set registry https://registry.npmmirror.com// 恢复官方源npm config set registry https://registry.npmjs.org

npm-check 和 npm-upgrade

npm-checknpm-upgrade 是两个不同的 Node.js 包,它们用于不同 purposes 的 npm 包管理和升级。

npm-check: 这个工具可以帮助你检查 npm 包的更新。当你运行 npm-check 命令时,它会告诉你哪些包有更新,哪些包已经是最新版本。这是一个简单的命令行工具,可以快速查看是否有可用的更新,而不需要升级整个 npm 环境。

使用方式:

12

npm install -g npm-checknpm-check

npm-upgrade: 这个工具用于升级 npm 包到最新版本。与 npm-check 不同,npm-upgrade 会实际升级你的项目中的包。这是一个全局安装的包,可以用来升级 npm 仓库中的包,也可以用来升级 npm 自身。

使用方式:

12

npm install -g npm-upgradenpm-upgrade package-name

其中 package-name 是你想要升级的 npm 包的名称。

  • 请注意,npm-checknpm-upgrade 可能不是最常用的包来检查和升级 npm 包。通常,直接使用 npm 命令的 update 选项就足够了,它可以自动检查并升级你的项目中的所有依赖项。

1

npm update

  • 如果你想要升级 npm 自身,可以使用以下命令:

1

npm install -g npm@latest

  • 或者,如果你使用的是 nvm (Node Version Manager),你可以简单地切换到最新版本的 Node.js,这通常也会升级 npm:

1

nvm use node

卸载 nvm

Help 文档中有讲:

1

to remove, delete, or uninstall nvm - just remove the `$NVM_DIR` folder (usually `~/.nvm`)

也就是删了 $HOME/.nvm 文件夹就行。

参考资料

  • https://blog.csdn.net/qq_22182989/article/details/125387145
  • https://blog.csdn.net/xhp312098226/article/details/131247719
  • https://github.com/nvm-sh/nvm

0 人点赞