前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >怎样切换不同版本的 Node[每日前端夜话0x90]

怎样切换不同版本的 Node[每日前端夜话0x90]

作者头像
疯狂的技术宅
发布2019-07-10 12:39:41
4.1K0
发布2019-07-10 12:39:41
举报
文章被收录于专栏:京程一灯京程一灯京程一灯

正文共:2415 字

预计阅读时间:9 分钟

作者:Brian De Sousa

翻译:疯狂的技术宅

来源:logrocket

有时候几乎每周都会发布新版本的 Node.js —— 每隔几周发布一次小版本,每隔几个月发布一次主要版本。如果你是一个需要在不同程序和项目之间切换的码农,可能会发现需要运行不同版本的 Node。

幸运的是,有几种不错的方法可以安装多个版本的 Node 并根据需要进行切换。本文将讨论和比较在 Linux/Mac 环境下的两个流行的 Node 版本管理器:**NVM for Windows ** 和 n Node version manager

提示:Windows 和 Linux/Mac 有不同的 NVM 实现;但是 n 的 npm 包仅在 Linux/Mac 上得到支持。

为了进行比较,让我们假设你正在处理两个程序。程序 1 是在 Node 6.17.1上运行的 Angular 5 程序。程序 2 是在 Node 8.16.0 上运行的 Angular 7 程序。以下是你需要完成的任务:

  • 修复程序 1 上的 bug x
  • 将程序 2 升级到 Angular 8

实际上,你需要三个版本的 Node 才能完成任务,因为你需要将程序 2 升级到 Node 10.9或更高版本才能支持 Angular 8 的升级。

NVM for Windows

从技术上讲,有两个完全独立的NVM项目,它们在不同的操作系统上提供类似的功能,但是彼此之间保持独立:

  • nvm-sh/nvm 是一个 bash 脚本,可用于管理 Linux 和 Mac 上的 Node 版本【https://github.com/nvm-sh/nvm】
  • coreybutler/nvm-windows 是 Windows 程序,可用于在 Windows 上的管理 Node 版本【https://github.com/coreybutler/nvm-windows/tree/1.1.7】

安装

安装非常简单,从 GitHub 上下载 NVM for Windows 安装程序的最新版本。在撰写本文时,最新版本是 1.1.7 。下载并解压缩 nvm-setup.zip 并双击要安装的可执行文件。

安装程序会将 NVM 放在计算机上相应的文件夹中,并更新系统环境变量,以便可以在命令行使用 nvm 和将来要安装的 node

提示:如果你希望安装到自己的文件夹下,请下载 nvm-noinstall.zip 并将其解压缩到你想要的任何位置。并运行其中的 install.cmd 来设置必要的系统环境变量。 提示:GitHub 上提供了详细的安装说明【https://github.com/coreybutler/nvm-windows】。

安装完成后,打开命令窗口并确认 NVM 可用:

1D:\>nvm version
21.1.7

运行程序 1

如果你没忘的话,你需要使用三个不同版本的 Node 来处理两个不同的程序。首先运行程序 1。某些命令的输出用 ... 截断以节省空间。

 1D:\>nvm list available
 2|   CURRENT    |     LTS      |  OLD STABLE  | OLD UNSTABLE |
 3|--------------|--------------|--------------|--------------|
 4|    12.4.0    |   10.16.0    |   0.12.18    |   0.11.16    |
 5...
 6D:\>nvm install 6.17.1
 7Downloading node.js version 6.17.1 (64-bit)...
 8Complete
 9Creating C:\Users\Brian\Downloads\nvm-noinstall\temp
10
11Downloading npm version 3.10.10... Complete
12Installing npm v3.10.10...
13
14Installation complete. If you want to use this version, type
15
16nvm use 6.17.1
17D:\>nvm use 6.17.1
18D:\>nvm list
19  * 6.17.1 (Currently using 64-bit executable)    
20D:\>node -v
21v6.17.1
22D:\>cd application1
23D:\application1>npm install
24...
25D:\application1>npm start
26> application1@0.0.0 start D:\application1
27> ng serve
28
29** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **
30...

以下是你刚刚利用 NVM 的一些关键功能完成的工作:

  • nvm list available 提供了可安装的 Node 版本列表
  • nvm install 安装了所需的 Node 版本(默认为64位版本,因为当前系统的架构是64位)
  • nvm use 激活了刚刚安装的版本
  • nvm list 用来确认安装并激活的正确版本的 Node(如果存在其他已安装的版本,则会列出)

一旦 Node 被安装并激活,那就像往常一样。你可以遵循程序所需的任何 Node/npm工作流程。

提示:你的 Node 版本彼此之间被完全隔离。例如,如果在一个版本的 Node 上全局安装软件包,则该软件包将无法在其他版本的 Node 上使用。

运行程序2

因此,你已在程序1中修复了错误 x,现在你已准备好将程序 2 升级到Angular 8:

 1D:\nvm install 8.16.0
 2...
 3D:>nvm use 8.16.0
 4Now using node v8.16.0 (64-bit)
 5D:>cd application2
 6D:\application2>npm install
 7...
 8D:\application2>npm start
 9...
10D:\application2>nvm install 10.16.0
11...
12D:\application2>nvm use 10.16.0
13Now using node v10.16.0 (64-bit)
14D:\application2>npm i -g @angular/cli@8
15...
16D:\application2>ng update @angular/cli @angular/core
17...
18D:\application2>npm install
19...
20D:\application2>npm start
21...

在 NVM(和 Angular CLI)的帮助下,你通过几个命令快速完成了升级:

  • nvm installnvm use 安装并激活 v8.16.0,以便你可以在升级之前验证程序是否能够按预期工作
  • nvm installnvm use 安装并激活 v10.16.0 准备升级
  • 全局安装 @angular/cli 包用来执行自动升级 Angular 程序的 ng update 命令
  • npm installnpm start 来测试新升级的程序

n Node version manager

n Node version manager 提供了一个更简单的 CLI,用于在 Node 版本之间进行安装和切换。它仅在Linux 或 Mac 操作系统上受到支持。

提示:详细的安装和使用说明可在 GitHub上的 tj/n 存储库中找到【https://github.com/tj/n】。

安装

如果你已经安装某个版本的 Node 和 npm ,则可以用 npm install -g n 来安装 n,就像安装其他 NPM 包一样。

如果你还没有安装 Node 或 npm,可以用 GitHub 中的 bash 脚本安装 n。这是它的样子:

提示:你必须安装 Git 才能使用 bash 脚本安装 n。

 1~$ curl -L https://git.io/n-install | bash
 2...
 3=== n successfully installed.
 4  The active Node.js version is: v10.16.0
 5
 6  Run `n -h` for help.
 7  To update n later, run `n-update`.
 8  To uninstall, run `n-uninstall`.
 9
10  IMPORTANT: OPEN A NEW TERMINAL TAB/WINDOW or run `. /home/brian/.bashrc`
11             before using n and Node.js.
12===
13~$ . /home/brian/.bashrc
14~$ n
15node/10.16.0

通过从 GitHub 下载并运行 n-install 脚本来安装 n。n 默认安装了一个版本的 Node。

运行程序 1

程序 1 需要 Node v6.17.1,因此你需要先安装它,然后再运行程序。

 1~$ n 6.17.1
 2     install : node-v6.17.1
 3       mkdir : /home/brian/n/n/versions/node/6.17.1
 4       fetch : https://nodejs.org/dist/v6.17.1/node-v6.17.1-linux-x64.tar.gz
 5####################################################################################################################################### 100.0%
 6installed : v6.17.1
 7~$ node -v
 8v6.17.1
 9~$ cd application1
10~/application1$ npm install
11...
12~/application1$ npm start
13> application1@0.0.0 start ~/application1
14> ng serve
15
16** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **
17...

用于安装和激活 Node 版本的 n 命令很简单:n 6.17.1。你也可以用 n latest 获取最新版本的 Node 或 n lts 来获取最新的 LTS 版 Node。

安装 Node 后,程序可以照常运行。

提示:与 NVM 类似,Node 版本完全相互隔离。例如不同的 Node 版本之间不共享全局安装的软件包。

运行程序2

接下来,你需要运行 程序 2 并将其升级到 Angular 8:

 1$ n 8.16.0
 2...
 3$ cd application2
 4~/application2$ npm install
 5...
 6~/application2$ npm start
 7...
 8~/application2$ n 10.16.0
 9...
10~/application2$ npm i -g @angular/cli@8
11...
12~/application2$ ng update @angular/cli @angular/core
13...
14~/application2$ npm install
15...
16~/application2$ npm start
17...

为了确保程序2在升级之前能够运行,需要安装 Node v8.16.0 。然后按照 Angular 8 的要求安装 Node v10.16.0。全局安装 Angular CLI,使用 ng update 对程序进行更新。最后程序在升级后开始测试。

你可能已经注意到,用 n <version> 命令安装和切换到新版本的 Node 会稍微快一点。

直接使用Node二进制文件

n 提供了直接调用特定 Node 二进制文件的功能,而无需显式切换到该版本的 Node。NVM 则没有类似的功能。

1~$ echo "console.log('Node version: ' + process.version)" > index.js
2~$ node -v
3v8.16.0
4~$ n use 10.16.0 index.js
5Node version: v10.16.0
6~$ n use 12.4.0 index.js
7  Error: '12.4.0' is not installed
8~$ node -v
9v8.16.0

在上面的示例中,当前 Node 的版本是 v8.16.0。当运行 n use 10.16.0 index.js 时,输出表明用于执行脚本的 Node 版本是 10.16.0。执行后,当前 Node 的版本仍然是 v8.16.0。请注意,n use 命令所请求的 Node 版本需要由 n 安装。

在某些情况下,这个功能非常有用。例如,有一个构建服务器,用于构建需要不同 Node 版本的程序。可以用 n use 命令触发每个构建,并能够指定该程序所需的 Node 版本。

差异

NVM for Windows 和 n 有许多常见功能,也有一些独特的功能,这些功能会影响你使用每个工具的方式和位置。以下是一些主要差异的摘要:

能力

NVM for Windows

n

安装

Windows安装程序或独立安装

Bash脚本或npm包

操作系统支持

Windows(适用于Linux/Mac的不同实现)

仅限 Linux/Mac

列出要安装的 Node 的可用版本?

Yes

No

列出已安装的Node版本?

Yes

Yes

在不同的Node版本之间安装和切换?

Yes

Yes

直接访问Node二进制文件?

No

Yes

选择要安装的架构(x86,x64)?

Yes

Yes

你可以选择在 Linux/Mac 上使用 n,因为它的 API 很简单。或者你可以在 Windows 上选择 NVM for Windows,同时在 Linux 构建服务器上选择 n,并在 Linux 构建服务器上使用 n 来管理不同构建任务的 Node 版本。

无论怎样,这两种工具都能很好地满足能够动态切换 Node 版本的需求。


原文:https://blog.logrocket.com/switching-between-node-versions-during-development/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端先锋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • NVM for Windows
    • 安装
      • 运行程序 1
        • 运行程序2
        • n Node version manager
          • 安装
            • 运行程序 1
              • 运行程序2
                • 直接使用Node二进制文件
                • 差异
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档