在 Windows 电脑上管理多个 Node.js 安装。
与 nvm 类似(但不完全相同),但适用于 Windows。提供安装程序。立即下载!
这一直是 Node 版本管理器,而不是 io.js 管理器,因此不支持 io.js。支持 Node 4+ 版本。请注意,运行 nvm install
或 nvm use
时,Windows 通常需要管理员权限(用于创建符号链接)。要安装最新版本的 Node.js,请运行 nvm install latest
。要安装最新稳定版本,请运行 nvm install lts
。
在某些情况下,在不同版本的 Node.js 之间切换的功能非常有用。例如,如果您想在不卸载稳定版 Node 的情况下使用最新的前沿版本测试正在开发的模块,那么这款实用程序可以帮到您。
使 NVM for Windows 正常运行的最简单(推荐)方法是在安装 NVM for Windows 之前卸载所有之前的 Node 安装。这样可以避免以下列出的所有陷阱。但是;如果您对 Node 安装进行了高度自定义,则可能不希望彻底删除它。NVM for Windows 可以接管现有安装的管理,但这存在一些细微差别(完全取决于运行安装的用户的权限)。如果您拥有管理员帐户,则在卸载原始 Node 版本之前安装 NVM for Windows 相对安全。如果您在封闭环境中工作,例如企业 Active Directory 环境,其中安装/卸载由组策略控制,则应考虑在安装 NVM4W 之前删除原始版本的 Node。
权限问题
出于安全原因,Windows 不允许一个供应商的应用程序“卸载”其他供应商的应用程序。官方 NVM4W 安装程序将尝试接管现有 Node 安装的管理,但实际上无法卸载原始 Node.js 版本。为了解决这个问题,NVM for Windows 安装程序会尝试将原始 Node.js 安装文件复制到 NVM 根目录。这包括全局 npm 模块和配置。此过程完成后,即可卸载原始 Node.js 安装,且数据不会丢失。
PATH 安装问题
如果您尝试将“NVM_SYMLINK”配置为使用现有目录(例如“C:\Program Files\nodejs”),则会失败,因为符号链接无法覆盖物理目录。如果您选择其他符号链接路径(例如“C:\nvm\node”),则不会出现此问题。
PATH 冲突
如果您未卸载原始版本,运行“nvm use”可能看起来没有任何反应。运行“node -v”将始终显示原始安装版本。这是由于“PATH”冲突导致的,当同一个应用程序多次安装时会出现此冲突。在 NVM4W 1.1.11 及更高版本中,运行“nvm debug”命令来确定是否存在“PATH”冲突。
为简单起见,我们建议在使用 NVM for Windows 之前卸载所有现有的 Node.js 版本。删除所有可能残留的 Node.js 安装目录(例如“%ProgramFiles%\nodejs”)。NVM 生成的符号链接不会覆盖现有的(即使是空的)安装目录。
备份所有全局“npmrc”配置
(例如“%AppData%\npm\etc\npmrc”)
或者,将设置复制到用户配置“%UserProfile%.npmrc”。删除现有的 npm 安装位置(例如“%AppData%\npm”),以防止全局模块冲突。
使用最新安装程序(附带卸载程序)。或者,按照手动安装 指南进行操作。
如果 NVM4W 在安装后无法立即运行,请重启终端/PowerShell(而不是重启整个电脑)。
安装后,必须为每个已安装的 Node 版本重新安装全局实用程序(例如 Yarn):
nvm use 14.0.0
npm install -g yarn
nvm use 12.0.1
npm install -g yarn
从 v1.1.8 开始,有一个升级实用程序可以自动完成升级过程。
要升级 nvm-windows,请运行新的安装程序。它将安全地覆盖需要更新的文件,而不会影响您的 node.js 安装。请确保使用相同的安装和符号链接文件夹。如果您最初安装在默认位置,则只需在每个窗口中点击“下一步”即可完成。
nvm-windows 在管理员 shell 中运行。您需要以管理员身份启动“powershell”或命令提示符才能使用 nvm-windows。
NVM for Windows 是一个命令行工具。只需在控制台中输入“nvm”即可获取帮助。基本命令如下:
nvm arch [32|64]
:显示 node 是在 32 位还是 64 位模式下运行。指定 32 位或 64 位以覆盖默认架构。nvm debug
:检查 NVM4W 进程是否存在已知问题。nvm current
:显示当前有效版本。nvm install <version> [arch]
:版本可以是特定版本,“latest”表示当前最新版本,“lts”表示最新的 LTS 版本。您可以选择指定安装 32 位还是 64 位版本(默认为系统架构)。将 [arch] 设置为“all”可同时安装 32 位和 64 位版本。在此命令末尾添加 --insecure
可绕过远程下载服务器的 SSL 验证。nvm list [available]
:列出 node.js 安装。在末尾输入 available
可显示可供下载的版本列表。nvm on
:启用 node.js 版本管理。nvm off
:禁用 node.js 版本管理(不卸载任何内容)。nvm proxy [url]
:设置下载使用的代理。将 [url]
留空可查看当前代理。将 [url]
设置为“none”可移除代理。nvm uninstall <version>
:卸载特定版本。nvm use <version> [arch]
:切换到指定版本。可选择使用 latest
、lts
或 newest
。newest
表示最新安装的版本。可选择指定 32/64 位架构。nvm use <arch>
将继续使用所选版本,但会切换到 32/64 位模式。有关在特定目录中使用 use
(或使用 .nvmrc
)的信息,请参阅 issue #16。nvm root <path>
:设置 nvm 存储不同版本 node.js 的目录。如果未设置 <path>
,则会显示当前根目录。nvm version
:显示当前运行的 Windows 版 NVM 版本。nvm node_mirror <node_mirror_url>
:设置 Node 镜像。中国用户可以使用 https://npmmirror.com/mirrors/node/nvm npm_mirror <npm_mirror_url>
:设置 npm 镜像。中国用户可以使用 https://npmmirror.com/mirrors/npm/请注意,您安装的任何全局 npm 模块都不会在您安装的各个 Node.js 版本之间共享。此外,您使用的 Node.js 版本可能不支持某些 npm 模块,因此在操作时请注意您的环境。
用户报告了使用防病毒软件(特别是 McAfee)时遇到的一些问题。该防病毒软件似乎正在操纵对 VBScript 引擎的访问。有关详细信息和解决方案,请参阅 问题 #133。
v1.1.8 未进行代码签名,但所有其他版本均由 Ecor Ventures LLC/Author.io 签名。这有助于防止大多数杀毒软件的误报。
v1.1.8+ 由于证书过期而未进行代码签名(有关原因,请参阅 发行说明)。v1.1.9 已进行代码签名,感谢 ajyong 赞助了新证书。
npm i -g yarn
go get github.com/blang/semver
go get github.com/olekukonko/tablewriter
build.bat
dist
目录中生成的安装程序。node.js 有多个版本管理器。像 nvm 和 n 这样的工具
只能在 Mac OSX 和 Linux 上运行。Windows 用户就没那么幸运了?不。nvmw 和 nodist
都是为 Windows 设计的。那么,为什么还要为 Windows 开发另一个版本管理器呢?
大多数 Windows 版 Node 版本管理器的架构都依赖于 .bat
文件,这些文件会巧妙地设置或模拟环境变量。有些版本管理器会使用 Node 本身(下载后),这很值得称赞,但容易出现问题。在 Node 0.10.30 左右,安装结构发生了一些变化,导致其中一些版本管理器无法兼容任何新版本。
此外,有些用户安装这些模块时会遇到困难,因为这需要对 Node 的安装结构有更多了解。我相信,如果版本切换更容易,人们可能会花时间在旧版本和新版本上测试他们的代码……这只是一个好习惯。
首先,此版本的 nvm 不依赖于 Node。它是用 Go 编写的,这比绕过有限的 .bat
文件要结构化得多。它不依赖于现有的 Node 安装。Go 提供了在同一代码库上创建 Mac/Linux 版本的功能。事实上,这项功能已经在进行中。
控制机制也大不相同。有两种常用方法可以支持具有热切换功能的多个 Node 安装。第一种是在每次切换版本时修改系统 PATH
,或者使用 .bat
文件模拟 Node 可执行文件并进行相应的重定向来绕过它。在我看来,这似乎有点 hacky,而且这种实现方式也带来了一些问题。
第二种选择是使用符号链接。这种方法需要将符号链接放入系统 PATH
中,然后将其目标更新为要使用的 Node 安装目录。这是一种简单的方法,似乎也是人们推荐的……直到他们意识到符号链接在 Windows 上有多麻烦。这就是为什么以前没有发生过这种情况。
要创建/修改符号链接,您必须以管理员身份运行,并且必须绕过 Windows UAC(那个烦人的提示)。幸运的是,我已经使用 node-windows 中的一些帮助脚本解决了这个问题。因此,Windows 版 NVM 维护一个符号链接,该符号链接仅在安装期间放入系统“PATH”中。切换到不同版本的 Node 只需切换符号链接目标即可。因此,此实用程序不要求您每次打开控制台窗口时都运行“nvm use x.x.x”。当您_确实_运行“nvm use x.x.x”时,Node 的活动版本会在所有打开的控制台窗口中自动更新。它还会在系统重启后继续生效,因此您只需在需要进行更改时使用 nvm。
NVM for Windows 附带一个安装程序,这是我在 Fenix Web Server 工作期间的副产品。
总的来说,这个项目汇集了一些想法、一些久经考验的其他模块,并支持新版本的 Node。
NVM for Windows 使用 Node 项目提供的 列表 来识别“最新”版本。1.1.1 及以上版本使用此列表。在此列表出现之前,我一直在抓取发行版本并将其作为独立的 数据源 提供。此列表曾在 1.1.0 及之前的版本中使用,但现在已弃用。
我需要它,很简单。此外,显然 Node 核心不支持 多版本支持。这也是我尝试 Go 的一个借口。
我选择 Go 是因为它跨平台,感觉比 Java 开销更小,而且存在的时间比大多数人想象的要长。另外,我想尝试一下。有人问我为什么不用 Node 来写。用你正在尝试安装的工具来写工具对我来说毫无意义。因此,我的项目需求很简单……不是 Node 的东西。Node 会不断发展和变化。如果你需要提醒这一点,请记住 io.js、Ayo、4.x.x 和 6.x.x 之间的所有重大更改,以及 12+ 版本向 ES 模块的转变。