如何在 Linux 中使用 n 管理 Nodejs 版本

本指南为您简要介绍 “n”,一个非官方的 node 版本管理工具,然后解释如何在 Linux 操作系统中使用 n 轻松管理 nodejs 版本。

内容

  1. 什么是节点版本管理器 n?
  2. 1.在Linux中安装n
    1. 1.2. 为节点安装创建主目录
    2. 1.3. 使用 n-install 脚本安装 n
  3. 2、Linux下用n管理nodejs版本
    1. 2.1. 获得帮助
    2. 2.2. 使用 n 安装 Nodejs 版本
    3. 2.3. 下载 Nodejs 版本,但不要安装
    4. 2.4. 列出本地下载的 Nodejs 版本
    5. 2.5. 列出远程存储库中可用的 Nodejs 版本
    6. 2.6. 显示下载的Nodejs版本的路径
    7. 2.7. 切换 Nodejs 版本
    8. 2.8. 执行下载的Nodejs版本
    9. 2.9. 删除下载的 Nodejs 版本
      1. 结论

什么是节点版本管理器 n?

节点 不需要介绍。 Nodejs 是基于 Google V8 引擎构建的 JavaScript 运行时环境。 Nodejs 带有一个名为的内置包管理器 npm 安装和管理节点版本,还有许多第三方工具可以管理节点版本。 n 是第三方节点版本管理工具之一。 是的,它只是一个字母 – n。

n 是一个交互式节点版本管理器,可以轻松管理单个或多个 NodeJS 版本! 没有子shell,没有配置文件设置,没有复杂的API,没有学习曲线,它只是一个 简单的 工具。 它只是一个 shell 脚本,它的代码可以在 GitHub 中免费获得。

1.在Linux中安装n

安装 n 的最简单方法是通过 npm. 如前所述,Npm 是 Nodejs 的内置包管理器,并预装在 Nodejs 中。

我假设您的 Linux 机器上已经安装了最新的 Nodejs。 如果您还没有安装 NodeJS,请参考以下指南:

  • 如何在 Linux 上安装 NodeJS

接下来,运行以下命令在 Linux 中安装 n:

$ npm install -g n

如果 npm 不可用或者你不想用 npm 安装 n,你可以直接从 GitHub 抓取 n 脚本并像下面这样安装它:

$ curl -L https://raw.githubusercontent.com/tj/n/master/bin/n -o n
$ bash n lts

这将同时安装 node lts 版本和 npm.

1.2. 为节点安装创建主目录

默认情况下,n 安装 node 在下面 n/versions 的子目录 /usr/local/ 目录中定义的 N_PREFIX 环境变量。 如您所知,我们需要 sudo 安装节点的权限 /usr/local/n/versions/node/ 目录。 为避免使用 sudo,您可以在 $HOME 中创建一个用于节点安装的专用目录,并将它们添加到您的 PATH.

要为节点安装创建主目录,请编辑您的用户配置文件,例如 ~/.bashrc

$ vi ~/.bashrc

添加以下几行:

 N_PREFIX=$HOME/.n
PATH=$N_PREFIX/bin:$PATH

ESC 键和类型 :wq 保存文件并退出。

1.3. 使用 n-install 脚本安装 n

安装 n 的另一种方法是通过 n-安装 脚本,它直接从 GitHub 安装 n。

$ curl -L https://git.io/n-install | bash

此命令将执行以下一组任务:

  • 首先,它同时设置 PREFIXN_PREFIX$HOME/n;
  • 并且,安装 n$HOME/n/bin;
  • 接下来修改支持shell的初始化文件导出 N_PREFIX;
  • 然后,添加 $HOME/n/binPATH;
  • 最后,安装最新的 LTS Node.js 版本。

2、Linux下用n管理nodejs版本

使用 n 安装和管理 nodejs 版本非常简单! 让我们看几个例子。

2.1. 获得帮助

如果您不熟悉 n,那么调出帮助部分并学习如何使用 n 可能是个好主意。

要查看 n 的帮助部分,只需运行:

$ n --help

查看帮助手册以了解每个命令的用法。

 Usage: n [options] [COMMAND] [args]  Commands:  n                              Display downloaded Node.js versions and install selection    n latest                       Install the latest Node.js release (downloading if necessary)    n lts                          Install the latest LTS Node.js release (downloading if necessary)    n                     Install Node.js  (downloading if necessary)    n install             Install Node.js  (downloading if necessary)    n run  [args …]     Execute downloaded Node.js  with [args …]    n run  [args …]     Execute downloaded node  with [args …]    n which               Output path for downloaded node     n exec   [args…]  Execute command with modified PATH, so downloaded node  and npm first    n rm              Remove the given downloaded version(s)    n prune                        Remove all downloaded versions except the installed version    n --latest                     Output the latest Node.js version available    n --lts                        Output the latest LTS Node.js version available    n ls                           Output downloaded versions    n ls-remote [version]          Output matching versions available for download    n uninstall                    Remove the installed Node.js  Options:  -V, --version         Output version of n    -h, --help            Display help information    -p, --preserve        Preserve npm and npx during install of Node.js    -q, --quiet           Disable curl output (if available)    -d, --download        Download only    -a, --arch            Override system architecture    --all                 ls-remote displays all matches instead of last 20    --insecure            Turn off certificate checking for https requests (may be needed from behind a proxy server)    --use-xz/--no-use-xz  Override automatic detection of xz support and enable/disable use of xz compressed node downloads.  Aliases:  install: i    latest: current    ls: list    lsr: ls-remote    lts: stable    rm: -    run: use, as    which: bin  Versions:  Numeric version numbers can be complete or incomplete, with an optional leading 'v'.    Versions can also be specified by label, or codename,    and other downloadable releases by /  4.9.1, 8, v6.1    Numeric versions lts               Newest Long Term Support official release latest, current   Newest official release auto              Read version from file: .n-node-version, .node-version, .nvmrc, or package.json engine            Read version from package.json boron, carbon     Codenames for release streams lts_latest        Node.js support aliases and nightly, rc/10 et al

2.2. 使用 n 安装 Nodejs 版本

安装最新的 nodejs 版本 n,只需运行:

$ n latest

示例输出:

 installing : node-v16.2.0         mkdir : /home/ostechnix/.n/n/versions/node/16.2.0         fetch : https://nodejs.org/dist/v16.2.0/node-v16.2.0-linux-x64.tar.xz     installed : v16.2.0 (with npm 7.13.0)  Note: the node command changed location and the old location may be remembered in your current shell.           old : /home/ostechnix/.nvm/versions/node/v16.1.0/bin/node           new : /home/ostechnix/.n/bin/node  To reset the command location hash either start a new shell, or execute PATH="$PATH"
在 Linux 中使用 n 安装 nodejs 版本

旧版本的节点将被移动到新位置即 /home/ostechnix/.n/bin/node 就我而言。 打开一个新的 shell 会话或重新启动终端会话以使用新位置的节点版本。

检查安装的节点版本:

$ node --version v16.2.0

检查 npm 版本:

$ npm -v 7.13.0

同样,您可以使用以下命令安装 LTS 节点版本 n 像下面这样:

$ n lts

示例输出:

    installing : node-v14.17.0         mkdir : /home/ostechnix/.n/n/versions/node/14.17.0         fetch : https://nodejs.org/dist/v14.17.0/node-v14.17.0-linux-x64.tar.xz     installed : v14.17.0 (with npm 6.14.13)

您还可以安装特定的 Nodejs 版本,例如 16.0.0,使用命令:

$ n 16.0.0

您可能已经注意到, n 为每个节点版本创建单独的目录。 例如,它创建 /home/ostechnix/.n/n/versions/node/16.2.0 最新节点版本的目录, n/versions/node/14.17.0 对于节点 LTS 版本和 n/versions/node/16.0.0 对于节点版本 16.0.0。 这样一来,每个版本都不会相互混合,我们可以随时切换到任何版本。

2.3. 下载 Nodejs 版本,但不要安装

如果您不想安装 Nodejs 版本,而只想下载它,请使用 -d, --download 选项:

$ n -d 15.8.0

这个命令只会下载node 15.8.0版本,不会安装。

示例输出:

 installing : node-v15.8.0         mkdir : /home/ostechnix/.n/n/versions/node/15.8.0         fetch : https://nodejs.org/dist/v15.8.0/node-v15.8.0-linux-x64.tar.xz

2.4. 列出本地下载的 Nodejs 版本

要查看本地缓存中所有下载的 Nodejs 版本,只需运行:

$ n ls

或者,

$ n list

示例输出:

 node/14.17.0  node/15.8.0  node/16.0.0  node/16.2.0

2.5. 列出远程存储库中可用的 Nodejs 版本

我们可以用 ls-remote 查看最近 20 个版本的 Nodejs 的选项 npm 注册表.

$ n ls-remote

或者,

$ n lsr

示例输出:

 Listing remote… Displaying 20 matches (use --all to see all).  16.2.0  16.1.0  16.0.0  15.14.0  15.13.0  15.12.0  15.11.0  15.10.0  15.9.0  15.8.0  15.7.0  15.6.0  15.5.1  15.5.0  15.4.0  15.3.0  15.2.1  15.2.0  15.1.0  15.0.1

最新版本将显示在顶部。

默认情况下,它列出了 20 个版本。 您还可以显示一定数量的节点版本。

$ n lsr 10

要列出所有可用的 nodejs 版本,请使用 --all 选项。

$ n ls-remote --all

2.6. 显示下载的Nodejs版本的路径

要打印特定下载节点版本的完整路径,请运行:

$ n which node/16.2.0

示例输出:

/home/ostechnix/.n/n/versions/node/16.2.0/bin/node

2.7. 切换 Nodejs 版本

最后安装的版本将是默认节点版本。 如果要切换到其他版本,请键入 n 并从下载的节点版本列表中选择一个版本。

$ n

此命令将显示所有下载的 nodejs 版本。 您可以使用向上/向下箭头选择所需的版本,然后按 ENTER 键进行安装。

    node/14.17.0     node/15.8.0   ο node/16.0.0     node/16.2.0   Use up/down arrow keys to select a version, return key to install, d to delete, q to quit

默认版本前面有一个小圆圈表示。

如果您不想要特定下载的 nodejs 版本,只需选择它并按 d 删除它。 要退出,请按 q.

2.8. 执行下载的Nodejs版本

如前所述,最后安装的版本是默认节点版本。 如果要执行不同的版本而不将其设置为默认值,可以使用以下命令:

$ n run 15.8.0

示例输出:

Welcome to Node.js v15.8.0.  Type ".help" for more information.   >  

Ctrl+D 或输入 .exit 退出节点提示。

2.9. 删除下载的 Nodejs 版本

使用命令列出下载了多少节点版本:

$ n ls

要删除特定版本,只需提及其版本号,如下所示:

$ n rm node/16.0.0

或者,键入 n 查看可用的节点版本:

$ n

使用向上/向下箭头选择要删除的版本,然后按 d 删除它。 删除节点版本时必须小心。 因为不会提示您确认删除。 一旦你击中 d 所选版本将消失。

要删除除已安装版本之外的所有下载版本,请运行:

$ n prune

要完全删除已安装的 Nodejs 版本,请运行:

$ n uninstall

您将询问是否要从系统中删除 Node 和 Npm。 类型 y 并击中 ENTER 彻底删除的关键 nodenpm 安装者 n 从你的系统。

 Do you wish to delete node and npm from /home/ostechnix/.n? y  Uninstalling node and npm  /home/ostechnix/.n/bin/node  /home/ostechnix/.n/bin/npm  /home/ostechnix/.n/bin/npx  /home/ostechnix/.n/include/node  /home/ostechnix/.n/lib/node_modules/npm  /home/ostechnix/.n/share/doc/node  /home/ostechnix/.n/share/man/man1/node.1  /home/ostechnix/.n/share/systemtap/tapset/node.stp

但是,这不会删除使用 NVM 或您的分发包管理器安装的节点版本。 它只会删除与 n 一起安装的节点版本。

结论

当你想为不同的项目使用不同的 Nodejs 版本时,n 脚本会很有帮助。 您无需为每个项目删除一个版本的 Nodejs 并安装另一个版本。 您可以安装多个 Nodejs 版本并立即从一个 Nodejs 版本切换到另一个版本。

资源

  • n GitHub 存储库
  • n-install 脚本 GitHub 存储库

LinuxManage nodeNodeNodejsNpmOpensource