使用指南 您所在的位置:网站首页 nvme命令安装 使用指南

使用指南

2024-05-30 02:03| 来源: 网络整理| 查看: 265

节点版本管理器 Build Status nvm version CII Best Practices 目 录 介绍 关于 安装和更新 安装更新脚本(U) 附加注释 Linux 上的故障排除 macOS 上的故障排除 Ansible 验证安装 重要注释 Git 安装 手动安装 手动升级 用法 长期支持 在安装时迁移全局包 安装时文件中的默认全局包 IO.JS 系统版本的 Node 列出版本 设置自定义颜色 坚持自定义颜色 抑制彩色输出 恢复路径 设置默认节点版本 使用节点二进制文件的镜像 .NVMRC 更深的壳集成 狂欢 自动调用 nvm use ZSH Calling nvm use automatically in a directory with a .NVMRC file 鱼 使用 .nvmrc 文件在目录中自动调用 nvm use 运行测试 环境变量 Bash 完成 用法 兼容性问题 在 Alpine Linux 上安装 nvm 卸载 / 移除 手动卸载 docker 用于开发环境 问题 macOS 故障排除 维护者 许可证 版权声明 介绍

nvm 允许你通过命令行快速安装和使用不同版本的 Node。

示例:

$ nvm use 16 Now using node v16.9.1 (npm v7.21.1) $ node -v v16.9.1 $ nvm use 14 Now using node v14.18.0 (npm v6.14.15) $ node -v v14.18.0 $ nvm install 12 Now using node v12.22.6 (npm v6.14.5) $ node -v v12.22.6

就这么简单!

关于

nvm 是 node.js 的版本管理器,设计为按用户安装,并按 shell 调用。nvm 适用于任何 POSIX 兼容的 shell(sh、dash、ksh、zsh、bash),特别是在这些平台上:UNIX、macOS 和 Windows WSL 。

安装和更新 安装更新脚本(U)

要安装或更新 nvm ,你应该运行[安装脚本] nvm 。要做到这一点,你可以下载并手动运行脚本,也可以使用以下 curl 或 wget 命令:

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

运行上述命令中的任何一个都会下载一个脚本并运行它。该脚本将 nvm 库复制到 ~/.nvm,并尝试将下面代码片段中的源行添加到正确的配置文件(~/)。bash_profile,~/.zshrc,~/.profile,或 ~/.bashrc)。

export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm 附加注释

如果存在环境变量 $XDGCONFIGHOME,它将把 nvm 文件放在那里。

你可以将 --no-use 添加到上述脚本的末尾(. nvm )。sh--no-use)推迟使用 nvm,直到手动 [ 使用 `](#usage) 它。

你可以使用 NVMSOURCE、NVMDIR、PROFILE 和 NODEVERSION 变量来定制安装源、目录、配置文件和版本。例:curl ... | NVMDIR="path/to/nvm"。确保 NVM_DIR 不包含尾随的斜杠。

安装程序可以使用 git、curl 或 wget 下载 nvm,以可用者为准。

Linux 上的故障排除

在 Linux 上,在运行安装脚本之后,如果你在输入 command -v nvm 之后得到 nvm : command not found 或者没有看到终端的反馈,只需关闭当前的终端,打开一个新的终端,然后再次尝试验证。或者,你可以在命令行中为不同的 shell 运行以下命令:

bash:source ~/.bashrc

zsh:source ~/.zshrc

KSH:. ~/.profile

它们应该接收 nvm 命令。

macOS 上的故障排除

从 OS X10.9 开始,/usr/bin/git 已经被 Xcode 命令行工具预设,这意味着我们无法正确地检测是否安装了 Git。在运行安装脚本之前,你需要手动安装 Xcode 命令行工具,否则将会失败。(见 #1782)

如果在运行安装脚本后得到 nvm: command not found,原因可能如下:

由于 macOS10.15,默认的 shell 是 zsh,并且 nvm 将查找 .zshrc 以进行更新,默认情况下不会安装任何 shell。用 touch ~/.zshrc 创建一个,然后再次运行安装脚本。

如果使用以前的默认 shell Bash,则系统可能没有设置命令的 .bashprofile 文件。用 touch ~/.bashprofile 创建一个,然后再次运行安装脚本。然后,运行 source ~/.bash_profile 以获取 nvm 命令。

你以前使用过 bash,但是已经安装了 zsh。你需要手动将 这些线条 添加到 ~/.zshrc 并运行 . ~/.zshrc。

你可能需要重新启动终端实例或运行 . ~/.nvm/nvm.sh。重新启动你的终端 / 打开一个新的选项卡 / 窗口,或者运行 Source 命令将加载该命令和新的配置。

如果以上没有帮助,你可能需要重新启动你的终端实例。尝试在终端中打开一个新的选项卡 / 窗口,然后重试。

如果上述方法不能解决问题,你可以尝试以下方法:

如果你使用 Bash,可能是因为你的 .bashprofile(或 ~/.profile)没有正确地获取你的 ~/.bashrc 的源代码。你可以通过向其添加 source ~/ 来解决此问题,或者执行下面的下一步。

尝试将 来自 Install 部分的代码片段 添加到你通常的配置文件(~/)中,这样可以找到正确的 nvm 目录并加载 nvm 。bashprofile,~/.zshrc,~/.profile,或 ~/.bashrc)。

有关此问题和可能的解决方法的更多信息,请 请参阅此处

注意,对于使用 M1 芯片的 Mac,Node 从 V16.0.0 开始提供 ARM64Arch Darwin 封装。在早期版本中,只有 DarwinX64 包可用,但没有 DarwinARM64。如果你在使用 nvm 安装节点时遇到问题,那么你可能希望更新到 v16 或更高版本。

Ansible

你可以使用一个任务:

- name: nvm shell: > curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash args: creates: "{{ ansible_env.HOME }}/.nvm/nvm.sh" 验证安装

要验证 nvm 已安装,请执行以下操作:

command -v nvm

如果安装成功,它应该输出 nvm。请注意,which nvm 将不工作,因为 nvm 是源 shell函数,而不是可执行的二进制文件。

注意:在 Linux 上,在运行安装脚本后,如果你得到 nvm: command not found,或者在键入 command -v nvm 后没有看到终端的反馈,只需关闭当前的终端,打开一个新的终端,然后再次尝试验证。

重要注释

如果你运行的系统没有预打包的可用二进制代码,这意味着你将从它的源代码中安装 NodeJS 或 IO.JS,那么你需要确保你的系统有一个 C++ 编译器。对于 OS X,Xcode 可以工作,对于基于 Debian/Ubuntu/Linux 的 GNU/Linux,build-essential 和 libssl-dev 包可以工作。

注意:nvm 在某些情况下也支持 Windows。它应该通过 WSL(Linux 的 Windows 子系统)工作,这取决于 WSL 的版本。它还应该与 吉巴什 或 Cygwin 一起工作。否则,对于 Windows 来说,存在一些替代方案,这些方案既不受我们的支持,也不是我们开发的:

nvm-windows nodist NVS

注:nvm 也不支持fish(参见 #303)。我们既不支持也不开发替代方案:

bass 允许你使用在 Fish Shell 中为 bash 编写的实用程序 fast-nvm-fish 只适用于版本号(不是别名),但不会显著降低你的 shell 启动速度 plugin-nvm 的 Oh My Fish 插件,它使 nvm 和它的完整版可以在 Fish Shell 中使用 FNM -基于 fish 的版本管理器 fish-nvm--围绕nvm的包装器用于鱼类,延迟收集nvm,直到它实际使用。

注意:FreeBSD 仍然存在一些问题,因为 FreeBSD 没有官方的预构建二进制文件,并且编译from source 可能需要 补丁;请参阅问题清单:

[[#900][bug]FreeBSD 上的 NodeJS 可能需要打补丁](https://github.com/ nvm -sh/ nvm /issues/900) Nodejs/Node#3716

注意:在 OS X 上,如果你没有安装 Xcode,也不希望下载 ~4.3GB 的文件,则可以安装 Command Line Tools。你可以看看这篇关于如何做到这一点的博客文章:

如何在 OS X Mavericks 和 Yosemite 中安装命令行工具(不带 Xcode)

注意:在 OS X 上,如果你已经 / 已经安装了一个“系统”节点,并且希望在全球范围内安装模块,请记住:

当使用 nvm 时,你不需要 sudo 来全局安装带有 npm -g 的模块,因此,不要执行 sudo npm install -g grunt,而是执行 npm install -g grunt 如果你有一个 ~/.npmrc 文件,请确保它不包含任何 prefix 设置(这与 nvm 不兼容) 你可以(但不应该)?)保持你以前的“系统”节点安装,但是 nvm 将仅对你的用户帐户可用(用于安装 nvm 的帐户)。这可能会导致版本不匹配,因为其他用户将使用 /usr/local/lib/nodemodules/,而你的用户帐户将使用 ~/.nvm/versions/node/vX.X.X/lib/nodemodules/

不支持自定义安装。如果你对 Homebrew-installednvm 有问题,请 brew uninstall,并使用下面的说明安装它,然后再提交问题。

注意:如果你使用 zsh,你可以轻松地将 nvm 安装为 ZSH 插件。安装 zsh-nvm 并运行 nvm upgrade 进行升级。

注意:V1.7 之前的 Git 版本可能面临通过 HTTPS 协议从 GitHub 克隆 源的问题,并且在 V1.6 之前 Git 也有不同的行为,而在 之前的 Git 不能克隆标记,因此最低要求的 Git 版本是 V1.7.10。如果你对我们在这里提到的问题感兴趣,请参阅 GitHub 的 HTTPS 克隆错误 文章。

Git 安装

如果安装了 git(需要 GitV1.7.10+):

在用户配置文件的根目录中复制这个库 cd ~/ 从任何地方然后 git clone https://github.com/nvm-sh/nvm.git .nvm cd ~/.nvm 并使用 git checkout v0.39.1 查看最新版本 激活 nvm,方法是从你的 shell 中获取资源:. ./nvm.sh

现在将这些行添加到你的 ~/.bashrc、~/.profile 或 ~/.zshrc 文件中,以便在登录时自动获取这些行:(你可能必须添加到上述多个文件中的一个)

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 手动安装

对于完全手动安装,执行以下行,首先将 nvm库克隆到 $HOME/.nvm 中,然后加载 nvm:

export NVM_DIR="$HOME/.nvm" && ( git clone https://github.com/nvm-sh/nvm.git "$NVM_DIR" cd "$NVM_DIR" git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)` ) && \. "$NVM_DIR/nvm.sh"

现在将这些行添加到你的 ~/.bashrc、~/.profile 或 ~/.zshrc 文件中,以便在登录时自动获取这些行:(你可能必须添加到上述多个文件中的一个)

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 手动升级

对于使用 git 进行手动升级(需要 GitV1.7.10+):

更改为 $NVM_DIR pull 细数一下最新的变化 查看最新版本 激活新版本 ( cd "$NVM_DIR" git fetch --tags origin git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)` ) && \. "$NVM_DIR/nvm.sh" 用法

要下载、编译和安装最新版本的 Node,请执行以下操作:

nvm install node # "node" is an alias for the latest version

要安装特定版本的 Node:

nvm install 14.7.0 # or 16.3.0, 12.22.1, etc

安装的第一个版本成为默认值。新的 shell 将从 node 的默认版本开始(例如 nvm alias default)。

你可以使用 ls-remote 列出可用的版本:

nvm ls-remote

然后在任何新的 shell 中,只需使用已安装的版本:

nvm use node

或者你可以直接运行它:

nvm run node --version

或者,你也可以在子壳中运行任意命令,使用所需版本的节点:

nvm exec 4.2 node --version

你还可以获得可执行文件的路径,它被安装在以下位置:

nvm which 12.22

在版本指针(如“14.7”或“16.3”或“12.2 2.1”)之外,你可以使用以下特殊的默认别名:nvm install、nvm use、nvm run、nvm exec、nvm which 等:

node:这将安装最新版本的 节点 iojs:这将安装最新版本的 IO.JS ’ stable:此别名已被弃用,并且仅真正适用于 node``v0.12 和更早的版本。目前,这是 node 的别名。 unstable:此别名指向 node``v0.11-最后一次“不稳定”节点发布,自 1.0 之后,所有节点版本都是稳定的。(在 Semver 中,版本传递的是破损,而不是稳定性)。 长期支持

Node 有一个 时间表 用于长期支持,你可以在别名和 .nvmrc 文件中引用 LTS 版本,例如,对于最新的 LTS,使用记号 lts/*,对于来自“argon”行的 LTS 版本,使用 lts/argon。此外,以下命令支持 LTS 参数:

nvm install --lts / nvm install --lts=argon / nvm install 'lts/*' / nvm install lts/argon nvm uninstall --lts / nvm uninstall --lts=argon / nvm uninstall 'lts/*' / nvm uninstall lts/argon nvm use --lts / nvm use --lts=argon / nvm use 'lts/*' / nvm use lts/argon nvm exec --lts / nvm exec --lts=argon / nvm exec 'lts/*' / nvm exec lts/argon nvm run --lts / nvm run --lts=argon / nvm run 'lts/*' / nvm run lts/argon nvm ls-remote --lts / nvm ls-remote --lts=argon nvm ls-remote 'lts/*' / nvm ls-remote lts/argon nvm version-remote --lts / nvm version-remote --lts=argon / nvm version-remote 'lts/*' / nvm version-remote lts/argon

每当你的 nvm 本地副本连接到 https://nodejs.org 时,它将为所有可用的 LTS 行重新创建适当的本地别名。这些别名(存储在 $NVM_DIR/alias/lts 下)由 nvm 管理,你不应该修改、删除或创建这些文件--希望你的更改被撤消,并希望干预这些文件会导致可能不受支持的错误。

要获得 Node 的最新 LTS 版本并迁移现有的已安装包,请使用

nvm install 'lts/*' --reinstall-packages-from=current 在安装时迁移全局包

如果你想要安装 Node.js 的新版本,并从以前的版本迁移 NPM 包:

nvm install node --reinstall-packages-from=node

这将首先使用“ nvm Version Node”来标识要从其中迁移包的当前版本。然后,它解析要从远程服务器安装的新版本并安装它。最后,它运行“ nvm Reinstall-Packages”来将 NPM 包从你以前的 Node 版本重新安装到新的 Node 版本。

你还可以从 Node 的特定版本安装和迁移 NPM 包,如下所示:

nvm install 6 --reinstall-packages-from=5 nvm install v4.2 --reinstall-packages-from=iojs

请注意,重新安装包不会显式地更新 NPM 版本——这是为了确保 NPM 不会意外地升级到新节点版本的坏版本。

要同时更新 NPM,请添加 --latest-npm 标志,如下所示:

nvm install 'lts/*' --reinstall-packages-from=default --latest-npm

或者,你可以随时运行以下命令,在当前节点版本上获得最新支持的 NPM 版本:

nvm install-latest-npm

如果你已经得到了一个“NPM 不支持 node.js”的错误,那么你需要(1)恢复到以前的节点版本( nvm ls&nvm use ,(2)删除新创建的节点版本( nvm 卸载 ),然后(3)使用 --latest-npm 标志重新运行 nvm install。

安装时文件中的默认全局包

如果你在每次安装新版本时都有一个要安装的默认包的列表,那么我们也支持这一点——只需将包名(每行一个)添加到文件 $NVM_DIR/default-packages 中。你可以在命令行中添加 NPM 将接受的任何内容作为包参数。

# $NVM_DIR/default-packages rimraf [email protected] stevemao/left-pad io.js

如果你想要安装 IO.JS :

nvm install iojs

如果你想要安装新版本的 io.js,并从以前的版本迁移 NPM 包:

nvm install iojs --reinstall-packages-from=iojs

对于在 Node 中迁移 NPM 包所提到的指导方针也适用于 IO.JS。

系统版本的 Node

如果要使用 Node 的系统安装版本,可以使用特殊的默认别名“System”:

nvm use system nvm run system --version 列出版本

如果你想查看安装了哪些版本:

nvm ls

如果你想查看可安装的版本:

nvm ls-remote 设置自定义颜色

你可以设置用于显示版本和别名信息的五种颜色。这些颜色代替了默认的颜色。 初始颜色为:g、b、r、e

颜色代码:

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 nvm set-colors rgBcm 坚持自定义颜色

如果你希望在终止 shell 之后保持自定义颜色,那么可以在 shell 配置文件中导出 nvm_colors 变量。例如,如果你想使用青色、品红、绿色、粗红色和粗黄色,请添加以下行:

export NVM_COLORS='cmgRY' 抑制彩色输出

nvm help (or -h or --help),nvm ls,nvm ls-remote 和 nvm alias 通常会产生彩色输出。你可以使用 --no-colors 选项禁用颜色(或通过设置环境变量 TERM=dumb):

nvm ls --no-colors nvm help --no-colors TERM=dumb nvm ls 恢复路径

要恢复路径,你可以停用它:

nvm deactivate 设置默认节点版本

要设置要在任何新 shell 中使用的默认节点版本,请使用别名“default”:

nvm alias default node 使用节点二进制文件的镜像

要使用节点二进制文件的镜像,请设置 $NVMNODEJSORG_MIRROR:

export NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist nvm install node NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist nvm install 4.2

要使用 io.js 二进制文件的镜像,请设置 $NVMIOJSORG_MIRROR:

export NVM_IOJS_ORG_MIRROR=https://iojs.org/dist nvm install iojs-v1.0.3 NVM_IOJS_ORG_MIRROR=https://iojs.org/dist nvm install iojs-v1.0.3

nvm use 默认情况下不会创建“当前”符号链接。将 $NVMSYMLINKCURRENT 设置为“true”以启用此行为,这有时对 IDE 很有用。请注意,在启用此环境变量的多个 shell 选项卡中使用 nvm 可能会导致竞争条件。

.nvmrc

你可以在项目根目录(或任何父目录)中创建一个 .nvmrc 文件,其中包含节点版本号(或 nvm 理解的任何其他字符串;有关详细信息,请参见 nvm --help)。之后,nvm use、nvm install、nvm exec、nvm run 和 nvm which 如果命令行上没有提供版本,则将使用 .nvmrc 文件中指定的版本。

例如,要使 nvm 默认为最新的 5.9 版本、最新的 LTS 版本或当前目录的最新节点版本:

$ echo "5.9" > .nvmrc $ echo "lts/*" > .nvmrc # to default to the latest LTS version $ echo "node" > .nvmrc # to default to the latest version

[注意:这些示例假定了 echo 的 POSIX 兼容 shell 版本。如果你使用 Windowscmd 开发环境,例如 .nvmrc 文件被用来配置远程 Linux 部署,那么请记住 "s 将被复制,从而导致一个无效的文件。删除它们。]

然后当你运行 nvm 时:

$ nvm use Found '/path/to/project/.nvmrc' with version Now using node v5.9.1 (npm v3.7.3)

nvm useET。将从当前目录向上遍历目录结构,查找 .nvmrc 文件。换句话说,运行 nvm useet。在带有 .nvmrc 的目录的任意子目录中,都将使用 .nvmrc。

.nvmrc 文件的内容必须是 (如 nvm --help 所描述),后面跟着一个换行符。不允许有尾随空格,并且需要尾随换行符。

Deeper Shell Integration

你可以使用 avn’](https://github.com/wbyoung/avn) 深入集成到你的 shell 中,并在更改目录时自动调用 nvm。avn不受nvm维护者的支持。请 [report issues to theavn` team。

如果你更喜欢重量较轻的解决方案,下面的方案是由 nvm 用户贡献的。它们不受 nvm 维护者的支持。然而,我们正在接受提供更多例子的请求。

bash Automatically call nvm use

将以下内容放在 $HOME/.bashrc 的末尾:

cdnvm() { command cd "$@"; nvm_path=$(nvm_find_up .nvmrc | tr -d '\n') # If there are no .nvmrc file, use the default nvm version if [[ ! $nvm_path = *[^[:space:]]* ]]; then declare default_version; default_version=$(nvm version default); # If there is no default version, set it to `node` # This will use the latest version on your machine if [[ $default_version == "N/A" ]]; then nvm alias default node; default_version=$(nvm version default); fi # If the current version is not the default version, set it to use the default version if [[ $(nvm current) != "$default_version" ]]; then nvm use default; fi elif [[ -s $nvm_path/.nvmrc && -r $nvm_path/.nvmrc ]]; then declare nvm_version nvm_version=$(` and `*` characters and spaces # `locally_resolved_nvm_version` will be `N/A` if no local versions are found locally_resolved_nvm_version=$(nvm ls --no-colors "$nvm_version" | tail -1 | tr -d '\->*' | tr -d '[:space:]') # If it is not already installed, install it # `nvm install` will implicitly use the newly-installed version if [[ "$locally_resolved_nvm_version" == "N/A" ]]; then nvm install "$nvm_version"; elif [[ $(nvm current) != "$locally_resolved_nvm_version" ]]; then nvm use "$nvm_version"; fi fi } alias cd='cdnvm' cd "$PWD"

这个别名将从你当前的目录中搜索“up”,以检测 .nvmrc 文件。如果它找到它,它将切换到该版本;如果没有,它将使用默认版本。

zsh 使用 .nvmrc 文件在目录中自动调用 nvm use

将此放入 $HOME/.zshrc,以便每当你输入一个包含 .nvmrc 文件的目录时,自动调用 nvm use,该目录中的字符串告诉 nvm use 的哪个节点:

# place this after nvm initialization! autoload -U add-zsh-hook load-nvmrc() { local node_version="$(nvm version)" local nvmrc_path="$(nvm_find_nvmrc)" if [ -n "$nvmrc_path" ]; then local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")") if [ "$nvmrc_node_version" = "N/A" ]; then nvm install elif [ "$nvmrc_node_version" != "$node_version" ]; then nvm use fi elif [ "$node_version" != "$(nvm version default)" ]; then echo "Reverting to nvm default version" nvm use default fi } add-zsh-hook chpwd load-nvmrc load-nvmrc fish Calling nvm use automatically in a directory with a .nvmrc file

这需要安装 低音。

# ~/.config/fish/functions/nvm.fish function nvm bass source ~/.nvm/nvm.sh --no-use ';' nvm $argv end # ~/.config/fish/functions/nvm_find_nvmrc.fish function nvm_find_nvmrc bass source ~/.nvm/nvm.sh --no-use ';' nvm_find_nvmrc end # ~/.config/fish/functions/load_nvm.fish function load_nvm --on-variable="PWD" set -l default_node_version (nvm version default) set -l node_version (nvm version) set -l nvmrc_path (nvm_find_nvmrc) if test -n "$nvmrc_path" set -l nvmrc_node_version (nvm version (cat $nvmrc_path)) if test "$nvmrc_node_version" = "N/A" nvm install (cat $nvmrc_path) else if test nvmrc_node_version != node_version nvm use $nvmrc_node_version end else if test "$node_version" != "$default_node_version" echo "Reverting to default Node version" nvm use default end end # ~/.config/fish/config.fish # You must call it on initialization or listening to directory switching won't work load_nvm 运行测试

考试是用Urchin写的。安装 Urchin(和其他依赖项),如下所示:

npm install

有慢的测试和快的测试。缓慢的测试会执行安装节点和检查是否使用了正确的版本之类的操作。快速测试通过伪造这个来测试诸如别名和卸载之类的东西。从 nvm git库的根,运行这样的快速测试:

npm run test/fast

像这样运行慢速测试:

npm run test/slow

像这样运行所有测试:

npm test

Nota Bene:在测试运行时避免运行 nvm 。

环境变量

nvm 公开以下环境变量:

NVM_DIR- nvm 的安装目录。 NVM_BIN-其中安装了用于活动版本的节点、NPM 和全局包。 NVM_INC-node 的 include file directory(对于编译c/c++Addons for node 很有用)。 NVMCDFLAGS-用于保持与 ZSH 的兼容性。 NVMRCVERSION-来自的版本。如果正在使用 NVMRC 文件。

此外, nvm 修改 PATH,并且,如果存在,则在更改版本时修改 MANPATH 和 NODE_PATH。

Bash 完成

要激活,你需要获取 bash_completion:

[[ -r $NVM_DIR/bash_completion ]] && \. $NVM_DIR/bash_completion

在你的配置文件中,将上述sourcing line放在 nvm 的soucring line的下方。(bashrc,.bash_profile)。

用法

nvm:

$ nvm 标签

alias deactivate install list-remote reinstall-packages uninstall version cache exec install-latest-npm ls run unload version-remote current help list ls-remote unalias use which

nvm 别名:

$ nvm 别名 tab

default iojs lts/* lts/argon lts/boron lts/carbon lts/dubnium lts/erbium node stable unstable

$ nvm alias my_aliastab

v10.22.0 v12.18.3 v14.8.0

nvm 用途:

$ nvm 使用 标签

my_alias default v10.22.0 v12.18.3 v14.8.0

nvm 卸载:

$ nvm 卸载 标签

my_alias default v10.22.0 v12.18.3 v14.8.0 兼容性问题

如果你设置了一些非默认设置,nvm 将会遇到一些问题。(见 #606)已知造成问题的因素如下:

内部 ~/.npmrc:

prefix='some/path'

环境变量:

$NPM_CONFIG_PREFIX $PREFIX

外壳设置:

set -e Installing nvm on Alpine Linux

为了提供最佳性能(和其他优化), nvm 将在运行 nvm install X 时为节点(和 NPM)下载并安装预编译的二进制文件。Node 项目编译、测试和托管 / 提供了这些为主流 / 传统 Linux 发行版(如 Debian、Ubuntu、CentOS、Redhat 等)构建的预编译二进制文件。

与主流 / 传统 Linux 发行版不同,Alpine Linux 基于 BusyBox ,这是一个非常紧凑(约 5MB)的 Linux 发行版。BusyBox(以及 Alpine Linux)对大多数主流 / 传统 Linux 发行版使用不同的 C/C++ 堆栈-穆尔。这使得为这种主流 / 传统的二进制程序与 Alpine Linux 不兼容,因此我们不能简单地在 Alpine Linux 上 nvm install X 并期望下载的二进制程序能够正确运行-如果你尝试这样做,你可能会看到“...不存在”错误。

对于 nvm install,有一个 -s 标志,它请求 nvm 下载节点源并在本地编译它。

如果在 Alpine Linux 上安装 nvm 仍然是你想要或需要做的事情,那么你应该能够通过运行以下 Alpine Linux shell 来实现这一点:

apk add -U curl bash ca-certificates openssl ncurses coreutils python2 make gcc g++ libgcc linux-headers grep util-linux binutils findutils curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

节点项目有一些愿望,但没有具体的计划(由于编译、测试和支持的管理费用)来提供与 Alpine 兼容的二进制文件。

作为一个潜在的替代方案,@mhart(一个节点贡献者)有一些 Docker images for Alpine Linux with Node and optionally, npm, pre-installed。

卸载 / 移除 手动卸载

要手动删除 nvm,请执行以下操作:

$ rm -rf "$NVM_DIR"

编辑 ~/.bashrc(或其他壳资源配置)并删除以下行:

export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [[ -r $NVM_DIR/bash_completion ]] && \. $NVM_DIR/bash_completion Docker For Development Environment

为了使开发和测试工作更容易,我们有一个用于开发的 DockerFile,它基于 Ubuntu18.04 基本映像,准备了用于 nvm 开发的必要和有用的工具,以构建环境的 docker 映像,运行位于 nvm库根的 docker 命令:

$ docker build -t nvm-dev .

这将把你当前的 nvm 库与我们预先定义的开发环境打包成一个名为 nvm-dev 的 docker 映像,一旦构建成功,通过 docker images 验证你的映像:

$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE nvm-dev latest 9ca4c57a97d8 7 days ago 650 MB

如果没有错误消息,现在可以轻松地参与:

$ docker run -h nvm-dev -it nvm-dev nvm@nvm-dev:~/.nvm$

请注意,构建图像大约需要 8 分钟,图像大小大约为 650MB,因此不适合生产使用。

有关 docker 的更多信息和文档,请参阅其官方网站:

https://www.docker.com/ https://docs.docker.com/ 问题

如果尝试安装节点版本,但安装失败,请确保运行 nvm cache clear 以删除缓存的节点下载,否则可能会出现以下错误:

curl: (33) HTTP server doesn't seem to support byte ranges. Cannot resume.

我的 sudo node 在哪里?查看 #43

在 V0.8.6 版本的 Node 之后, nvm 尝试从二进制软件包进行安装。但是在某些系统中,由于共享库的不兼容性,官方的二进制软件包无法工作。在这种情况下,使用 -s 选项强制从源代码安装:

nvm install -s 0.8.6 如果设置 default 别名并不能在新 shell 中建立节点版本(即 nvm current 产生 system),请确保系统的节点 PATH 是在你的 shell 配置文件中的 nvm.sh 源代码行前设置的(参见 #658) macOS 故障排除

nvm 在 Vim Shell 中找不到节点版本

如果你将节点版本设置为系统节点版本 nvm use 6.2.1 以外的版本,并打开 Vim 并运行 :!node -v,如果你看到系统版本 v6.2.1,你应该会看到 v0.12.7。你需要运行:

sudo chmod ugo-x /usr/libexec/path_helper

有关此问题的更多信息,请参见 Dotphiles/Dotzsh 。

nvm 与 NPM 配置不兼容的“前缀”选项

可以找到一些解决此问题的方法 这里

还有一个边缘情况导致了这个问题,那就是 $HOME 路径和用户的主目录的实际名称之间的不匹配。

你必须确保 $HOME 中的用户目录名和运行 ls /Users/ 时看到的用户目录名以相同的方式大写([查看此问题](https://github.com/ nvm -sh/ nvm /issues/2261))。

要更改用户目录和 / 或帐户名,请遵循以下说明 这里

homebrew 使 zsh 目录不安全

zsh compinit: insecure directories, run compaudit for list. Ignore insecure directories and continue [y] or abort compinit [n]? y

homebrew 会导致不安全的目录,比如 /usr/local/share/zsh/site-functions 和 /usr/local/share/zsh。这不是 nvm 问题,而是一个自制问题。有关此问题的一些解决方案,请参见 这里。

带有 M1 芯片的 Mac 电脑

在 Node.js v15.3 中添加了对 M1架构的实验性支持,并在 v16.0 中添加了完全支持。因此,如果你像往常一样尝试安装较旧版本的 Node,你可能会在安装 Node 时遇到编译错误,或者在运行代码时遇到内存不足错误。

因此,如果你希望在 M1Mac 上运行 V16.0 之前的版本,那么最好编译针对 x8664Intel 的节点架构,以便 Rosetta2 能够将 x8664 处理器的指令转换为基于 ARM 的 Apple Silicon 指令。以下是你需要做的:

如果你还没有安装 Rosetta,请安装它

$ softwareupdate --install-rosetta

你可能会想,“我的 M1Mac 怎么会知道在为英特尔芯片编译的 Node 版本中使用 Rosetta?". 如果一个可执行文件只包含英特尔指令,macOS 将自动使用 Rosetta 来翻译指令。

打开使用 Rosetta 运行的 shell

$ arch -x86_64 zsh

注意:同样的事情也可以通过在 Finder 中找到终端或 iTerm 应用程序,右键单击,选择“获取信息”,然后选中标有“使用 Rosetta 打开”的框来完成。

注意:这个终端会话现在在 zsh 中运行。 如果 zsh 不是你通常使用的 shell,则 nvm 可能不是 source。 如果是这种情况,请确保 sourcenvm。

$ source "${NVM_DIR}/.nvm/nvm.sh"

安装你感兴趣的任何旧版本的节点。让我们以 12.2 2.1 为例。 这将获取节点源代码并对其进行编译,这将花费几分钟的时间。

$ nvm install v12.22.1 --shared-zlib

注意:你可能很好奇为什么 --shared-zlib 会被包括在内。 苹果系统 clang 编译器的最新版本中存在一个错误。 如果在你的系统上安装了这些坏版本中的一个,那么即使你没有包含 --shared-zlib 标志,上述步骤仍然可能成功。 但是,稍后,当你尝试使用旧版本的 node.jsnpm install 时,你将看到 incorrect data check 错误。 如果你想避免处理此问题时可能出现的麻烦,那么请包含该标志。 有关更多详细信息,请参见 这个问题 和 此评论

退出回到你的本机 shell。

$ exit $ arch arm64

注意:如果你选择了标有“使用 Rosetta 打开”的框,而不是在第二步中运行 CLI 命令,那么你将在这里看到 i386。 除非你有其他理由选择该框,否则你现在可以取消对它的选择。

检查以确保架构是正确的。x64 是 x86_64 的缩写,这是你希望看到的。

$ node -p process.arch x64

现在,你应该可以像往常一样使用 Node 了。

维护者

目前,唯一的维护者是 @ljharb -更多的维护者是非常欢迎的,我们希望随着时间的推移,加入到团队中。治理 将随着项目的发展而重新评估。

许可证

见 license.md 。

版权声明

版权 OpenJS 基金会 和 nvm 贡献者。版权所有。该 OpenJS 基金会 已注册商标并使用商标。有关 OpenJS 基金会 的商标列表,请参见我们的 商标政策 和 商标列表。Node.js 是 Joyent,Inc.的商标,并经其许可使用。OpenJS 基金会商标列表 上未注明的商标和标识是其各自持有者的商标或注册商标。使用它们并不意味着与它们有任何联系或得到它们的认可。

OpenJS 基金会 | 使用条款 | 隐私政策 | OpenJS 基金会章程 | 商标政策 | 商标列表 | cookie 政策



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有