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

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

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

节点JS 不需要介绍。 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.

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

$ vi ~/.bashrc

添加以下行:

export N_PREFIX=$HOME/.n
export 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 版本,例如 example 16.0.0,使用命令:

$ n 16.0.0

您可能已经注意到,n 为每个节点版本创建单独的目录。 为了 example, 它创建 /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 版本切换到另一个。

资源