填写此表格以提供您的想法并注册进度更新。
更新也将发布在 Author Software LinkedIn 页面上。
Microsoft/npm/Google 推荐适用于Windows的 Node.js 版本管理器。
最初的 nvm 是一个完全独立的项目,仅适用于 Mac/Linux。这个项目使用了完全不同的理念,不仅仅是 nvm 的克隆。详细信息列于为什么另一个版本管理器?最大的区别是什么?
不能赞助吗? 考虑提名 @coreybutler 作为 Github 之星。 |
遇到问题?请参阅常见问题 wiki。
寻求反馈:我们正在开发 Runtime (rt),它是 NVM For Windows 的后继者。请花一分钟时间填写此表格。谢谢你! |
管理 Windows 计算机上的多个 Node.js 安装。
tl;dr与 nvm 类似(不相同),但适用于 Windows。有安装程序。立即下载!
这一直是一个节点版本管理器,而不是一个 io.js 管理器,因此没有对 io.js 的后台支持。支持节点 4+。请记住,运行nvm install
或nvm use
时,Windows 通常需要管理权限(以创建符号链接)。要安装最新版本的 Node.js,请运行nvm install latest
。要安装最新的稳定版本,请运行nvm install lts
。
在某些情况下,在不同版本的 Node.js 之间切换的能力可能非常有用。例如,如果您想测试使用最新前沿版本开发的模块而不卸载稳定版本的节点,则此实用程序可以提供帮助。
让 NVM for Windows 正常运行的最简单(推荐)方法是在安装 NVM for Windows之前卸载任何先前安装的 Node。它避免了下面列出的所有陷阱。然而;如果您已经高度自定义了 Node 安装,您可能不希望对其进行破坏。适用于 Windows 的 NVM可以承担对现有安装的管理,但这存在细微差别(完全取决于运行安装的用户的权限)。如果您有管理帐户,则在卸载原始 Node 版本之前安装适用于 Windows 的 NVM 相对安全。如果您在封闭环境中工作,例如安装/卸载由组策略控制的公司 Active Directory 环境,那么您确实应该考虑在安装 NVM4W 之前删除 Node 的原始版本。
权限问题出于安全原因,Windows 不允许一个供应商的应用程序“卸载”另一供应商的应用程序。官方 NVM4W 安装程序将尝试管理现有的 Node.js 安装,但它实际上无法卸载原始 Node.js 版本。为了解决此问题,NVM for Windows 安装程序会尝试将原始 Node.js 安装文件复制到 NVM 根目录。这包括全局 npm 模块和配置。此过程完成后,可以卸载原始 Node.js 安装而不会丢失数据。
PATH 安装问题如果您尝试将NVM_SYMLINK
配置为使用现有目录(例如C:Program Filesnodejs
),则会失败,因为符号链接无法覆盖物理目录。如果您选择不同的符号链接路径(例如C:nvmnode
),这不是问题。
路径冲突如果您不卸载原始版本,则运行nvm use
可能看起来根本不执行任何操作。运行node -v
将始终显示原始安装版本。这是由于多次安装同一应用程序时会出现PATH
冲突。在 NVM4W 1.1.11+ 中,运行nvm debug
以确定是否存在PATH
冲突。
为简单起见,我们建议在使用适用于 Windows 的 NVM 之前卸载任何现有版本的 Node.js。删除可能保留的任何现有 Node.js 安装目录(例如%ProgramFiles%nodejs
)。 NVM 生成的符号链接不会覆盖现有的(甚至是空的)安装目录。
?备份任何全局npmrc
配置吗? (例如%AppData%npmetcnpmrc
)
或者,将设置复制到用户配置%UserProfile%.npmrc
。删除现有的 npm 安装位置(例如%AppData%npm
)以防止全局模块冲突。
使用最新的安装程序(附带卸载程序)。或者,按照手动安装指南进行操作。
如果 NVM4W 在安装后似乎没有立即工作,请重新启动终端/powershell(而不是整个计算机)。
安装后,必须为每个已安装的节点版本重新安装全局实用程序(例如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 在 Admin shell 中运行。您需要以管理员身份启动powershell
或命令提示符才能使用 nvm-windows
Windows 版 NVM 是一个命令行工具。只需在控制台中输入nvm
即可获得帮助。基本命令是:
nvm arch [32|64]
:显示节点是否在 32 位或 64 位模式下运行。指定 32 或 64 以覆盖默认体系结构。
nvm debug
:检查 NVM4W 进程是否存在已知问题。
nvm current
:显示活动版本。
nvm install
:版本可以是特定版本,“latest”表示最新的当前版本,“lts”表示最新的 LTS 版本。可选择指定安装 32 位还是 64 位版本(默认为系统 arch)。将 [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
:卸载特定版本。
nvm use
:切换使用指定版本。可以选择使用latest
、 lts
或newest
。 newest
是最新安装的版本。可选择指定 32/64 位架构。 nvm use
将继续使用所选版本,但切换到 32/64 位模式。有关在特定目录中使用use
(或使用.nvmrc
)的信息,请参阅问题 #16。
nvm root
:设置nvm应存储不同版本的node.js的目录。如果未设置
,则将显示当前根目录。
nvm version
:显示当前运行的 Windows NVM 版本。
nvm node_mirror
: 设置节点镜像。国内的可以使用https://npmmirror.com/mirrors/node/
nvm npm_mirror
:设置npm镜像。中国人可以使用https://npmmirror.com/mirrors/npm/
请注意,您可能安装的任何全局 npm 模块不会在您安装的各个版本的 Node.js 之间共享。此外,您使用的 Node 版本可能不支持某些 npm 模块,因此在工作时请注意您的环境。
用户报告了使用防病毒软件(特别是 McAfee)时出现的一些问题。防病毒软件似乎正在操纵对 VBScript 引擎的访问。有关详细信息和解决方案,请参阅问题 #133。
v1.1.8 未进行代码签名,但所有其他版本均由 Ecor Ventures LLC/Author.io 签名。这应该有助于防止大多数防病毒软件出现误报。
由于证书过期,v1.1.8+ 未对代码进行签名(有关原因,请参阅发行说明)。 v1.1.9的代码签名归功于 ajyong,他赞助了新证书。
太棒了; npm i -g yarn
详细信息请参阅维基百科。
从 http://golang.org 安装 go
下载源代码 / Git 克隆存储库
如果您想构建 64 位可执行文件,请将 build.bat 中的 GOARCH 更改为 amd64
启动 Windows 命令提示符并将目录更改为项目目录
执行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 的大多数节点版本管理器的架构都依赖于.bat
文件,这些文件使用一些巧妙的技巧来设置或模拟环境变量。其中一些使用节点本身(一旦下载),这是令人钦佩的,但容易出现问题。就在节点 0.10.30 左右,安装结构发生了一些变化,导致其中一些停止使用任何新内容。
此外,一些用户很难安装这些模块,因为它需要对节点的安装结构有更多的了解。我相信,如果人们更容易在版本之间切换,人们可能会花时间在过去和未来的版本上测试他们的代码......这只是一个很好的做法。
首先也是最重要的是,这个版本的 nvm 不依赖于 Node。它是用 Go 编写的,这是一种比破解有限的.bat
文件更加结构化的方法。它不依赖于现有的节点安装。 Go 提供了在相同代码库上创建 Mac/Linux 版本的能力。事实上,这已经在进行中。
控制机制也有很大不同。有两种支持具有热切换功能的多节点安装的通用方法。第一种是在切换版本时修改系统PATH
,或者使用.bat
文件模仿节点可执行文件并相应地重定向来绕过它。这对我来说总是显得有点老套,而且这种实现会带来一些怪癖。
第二个选项是使用符号链接。这个概念需要将符号链接放入系统PATH
中,然后将其目标更新到您要使用的节点安装目录。这是一种简单的方法,似乎也是人们所推荐的......直到他们意识到符号链接在 Windows 上有多么痛苦。这就是为什么以前没有发生过这种情况。
为了创建/修改符号链接,您必须以管理员身份运行,并且必须绕过 Windows UAC(那个烦人的提示)。幸运的是,我已经通过节点窗口中的一些帮助程序脚本解决了这个挑战。因此,NVM for Windows 维护一个仅在安装期间放入系统PATH
中的符号链接。切换到不同版本的节点就是切换符号链接目标。因此,此实用程序不需要您每次打开控制台窗口时都运行nvm use xxx
。当您运行nvm use xxx
时,节点的活动版本会在所有打开的控制台窗口中自动更新。它也会在系统重新启动之间持续存在,因此您只需在想要进行更改时使用 nvm。
NVM for Windows 附带了一个安装程序,这是我在 Fenix Web Server 上工作的副产品。
总的来说,这个项目汇集了一些想法、其他模块的一些久经考验的部分,以及对新版本节点的支持。
NVM for Windows 使用 Node 项目提供的列表来识别“最新”版本。版本 1.1.1+ 使用此列表。在此列表存在之前,我正在抓取版本并将其作为独立的数据源提供。此列表曾在版本 1.1.0 及之前的版本中使用,但现已弃用。
我需要它,简单明了。此外,很明显,节点核心不会支持多个版本。这也是玩围棋的一个借口。
我选择 Go 是因为它是跨平台的,感觉比 Java 开销更少,而且它的存在时间比大多数人想象的要长。另外,我想尝试一下。有人问我为什么不用 Node 来编写它。尝试使用您尝试安装的工具编写工具对我来说没有意义。因此,我的项目要求很简单……不是 Node.js 的东西。 Node 将继续发展和变化。如果您需要提醒这一点,请记住 io.js、Ayo、4.xx 和 6.xx 之间的所有重大更改,以及 12+ 中向 ES 模块的转变。在软件世界中,变化是不可避免的。 JavaScript 非常动态。
感谢所有在 Github 上和非 Github 上提交问题、提出建议并总体上帮助使这个项目变得更好的人。特别感谢
@vkbansal,他在整个早期版本中提供了重要的早期反馈。
@rainabba 和 @sullivanpt 用于集成 Node v4 支持。
@shadow 解决了路径名中长期存在的空格转义问题 (#355)。
ajyong 在 2021 年底赞助了代码签名证书。