likes
comments
collection
share

如何高效地管理npm源和Node版本?

作者站长头像
站长
· 阅读数 5

作为一名前端开发,我相信在平时工作中不可避免地要和新老项目打交道,那么新项目与老项目用的 Node 版本肯定是不一样的。针对老项目,我们需要使用旧版本的 Node,而针对新项目需要使用近期版本的 Node,在不同的项目之间需要切换不同的 Node 版本。

我们在开发过程中,经常需要使用 Node 自带的 npm 安装包和下载包,使用其默认源下载会非常地慢,我们还需要设置国内的镜像来加速其下载过程,当我们发布 npm 包时还需要设置回 npm 官方源,从而发布至 npm 官网,那么有没有对应的工具来高效地管理它们呢?

管理 npm 源

npm 是世界上最大的软件注册表,在安装 Node 的时候,会一并把 npm 安装在我们的客户端上,但是因为 npm 的服务器在国外,我们使用 npm 安装一些第三方包的时候,使用其官方源下载速度会非常的慢,甚至可能会出现卡死不动的现象,我们可以使用 nrm 来高效地管理 npm 源。

安装

全局安装 nrm

为了便于安装 nrm ,我们可以先手动设置 taobao源

首先,在命令行终端输入 npm config set registry https://registry.npmmirror.com

然后,在命令行终端输入 npm install nrm -g 全局安装 nrm

查看 npm 所有源

在命令行终端输入 nrm ls

如何高效地管理npm源和Node版本?

这时我们看到 nrm 帮我们列出其所有 npm 源地址,那我们如何切换源呢?

使用

切换源

首先确认下当前 npm 源是什么,在命令行终端输入 npm config get registry 查看当前 npm 源

如何高效地管理npm源和Node版本?

上图显示我这边的当前 npm 源是 taobao 源,我们切换回 npm 源试试,在命令行终端输入 nrm use npm

如何高效地管理npm源和Node版本?

查看一下当前源,在命令行终端输入 npm config get registry

如何高效地管理npm源和Node版本?

此时已经切换会 npm 官方源,我们也可以在命令行终端输入 nrm ls 再确认下是否是 npm 官方源

如何高效地管理npm源和Node版本?

我们看到 npm 官方源前面有个 * 号,可以确认当前源为 npm 官方源,下载第三方包或者 npm install 时还是建议使用 taobao 源,其下载速度还是挺快的,在命令行终端输入 nrm use taobao 这一行命令即可切换 taobao 源。值得注意的是,我们在发布 npm 包时,还是要切换到 npm 官方源。

nrm 其他命令

在命令行终端输入 nrm -h 看一下还有什么功能:

如何高效地管理npm源和Node版本?

nrm current 查看当前源

如何高效地管理npm源和Node版本?

nrm test [registry] 测试源的速度

如何高效地管理npm源和Node版本?

显然 taobao 源的速度是快于 npm 源的。

管理 Node 版本

Volta 是一种轻松管理 JavaScript 命令行工具的方式,它的主要特点是,快、跨平台支持、支持多个包管理器、每个项目的无缝版本切换。

通过 Volta 管理 Node,我们就可以在每个项目之间指定特定的 Node 版本,而无需在命令行针对不同的项目频繁的切换 Node 版本。

安装

Mac

在命令行终端输入 curl https://get.volta.sh | bash

Windows

下载 Volta,然后根据提示安装。

使用

我们以 Windows 为例

在命令行终端输入 volta install node@18.19.0 Volta 会帮你安装指定版本的 Node 并作为全局默认版本。

如何高效地管理npm源和Node版本?

在命令行终端输入 volta install node Volta 会帮你安装最新版本的 Node 并作为全局默认版本。

如何高效地管理npm源和Node版本?

在命令行终端输入 volta install node@16 Volta 会自动帮你选择合适版本的 Node 并作为全局默认版本。

如何高效地管理npm源和Node版本?

在命令行终端输入 volta list node 查看所有已经安装的 Node 版本,因为我之前安装过不同的版本,所以显示的版本比较多。

如何高效地管理npm源和Node版本?

Volta 的优势在于可以在指定项目中使用不同的 Node 版本,不再像 nvm 之前那样在不同项目中频繁切换 Node 版本。

我们新建两个文件夹用于测试:

新建 ce1 文件夹,在其根目录输入 npm init 生成 package.json 文件,然后输入 volta pin node@20.11.0

如何高效地管理npm源和Node版本?

Volta 就会在 package.json 文件中生成一个以 volta 为属性的对象,这代表了你在该项目中使用的 Node 版本,且该版本的 Node 只会在此项目中生效。

如何高效地管理npm源和Node版本?

查看 ce1 文件夹中 Node 版本及 npm 版本:

如何高效地管理npm源和Node版本?

新建 ce2 文件夹,同样在其根目录输入 npm init 生成 package.json 文件,这次我们输入 volta pin node@16.20.0

如何高效地管理npm源和Node版本?

同样会在 package.json 文件中新增一个以 volta 为属性的对象:

如何高效地管理npm源和Node版本?

查看 ce2 文件夹中 Node 版本及 npm 版本:

如何高效地管理npm源和Node版本?

Volta 提供的这种管理 Node 版本的方式相比于 nvm 每进入不同的项目就要手动切换不同的 Node 版本来说便捷多了,并且切换速度和下载速度都是非常快的,大大提高我们开发人员的工作效率。