Project Icon

nvm-windows

Windows 平台的 Node.js 多版本管理工具

nvm-windows 是专为 Windows 平台设计的 Node.js 版本管理工具。它支持在同一系统上安装和管理多个 Node.js 版本,便于开发者根据项目需求切换环境。该工具采用命令行界面,可轻松安装、卸载和切换不同版本的 Node.js。nvm-windows 使用 Go 语言开发,无需依赖 Node.js,具有稳定可靠的特点。

注意:我们已经开始全职开发 Runtime,这是 NVM for Windows 的继任者。

请填写此表单以提供您的想法并订阅进度更新。

更新也将发布在 Author Software LinkedIn 页面上。


Windows 版 NVM

MicrosoftnpmGoogle 推荐的 Windows Node.js 版本管理器。
这与 nvm 不是同一个东西!(展开查看详情)

原始的 nvm 是一个完全独立的仅适用于 Mac/Linux 的项目。 本项目采用了完全不同的理念,并非仅仅是 nvm 的克隆版。详情请参阅为什么需要另一个版本管理器?有什么重大区别?

立即下载 GitHub tag (latest SemVer) GitHub 发布日期 GitHub 所有版本 讨论 Twitter URL

赞助商
 

无法赞助?
考虑提名@coreybutler获得Github之星

遇到问题?请查看常见问题wiki

征求反馈:

我们正在开发Runtime (rt),这是NVM For Windows的后继版本。请花一分钟时间填写此表单来提供反馈。谢谢!

概述

在Windows计算机上管理多个node.js安装版本。

简而言之 类似于(但不完全相同)nvm,但适用于Windows。有安装程序。立即下载

这一直是一个node版本管理器,而不是io.js管理器,因此不支持io.js。支持Node 4+版本。请记住,运行nvm installnvm use时,Windows通常需要管理员权限(创建符号链接)。要安装最新版本的Node.js,请运行nvm install latest。要安装最新的稳定版本,请运行nvm install lts

NVM for Windows

在某些情况下,能够在不同版本的Node.js之间切换非常有用。例如,如果你想用最新的开发版本测试正在开发的模块,而不卸载稳定版本的node,这个工具可以帮到你。

在稳定版和不稳定版之间切换。

安装与升级

:star: :star: 卸载所有预先存在的Node安装!! :star: :star:

让NVM for Windows正常运行的最简单(推荐)方法是在安装NVM for Windows之前卸载任何先前的Node安装。这可以避免下面列出的所有陷阱。然而,如果你对Node安装进行了高度定制,你可能不希望完全删除它。NVM for Windows可以接管现有安装的管理,但这里面有一些细微差别(完全取决于运行安装的用户权限)。如果你有管理员账户,在卸载原始Node版本之前安装NVM for Windows是相对安全的。如果你在一个封闭环境中工作,比如由组策略控制安装/卸载的企业Active Directory环境,你真的应该考虑在安装NVM4W之前移除原始版本的Node。 权限问题 出于安全考虑,Windows 不允许一个供应商的应用程序"卸载"另一个供应商的应用程序。官方的 NVM4W 安装程序会尝试接管现有的 Node.js 安装,但它无法真正卸载原始的 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 生成的符号链接不会覆盖现有的(即使是空的)安装目录。

:eyes: 备份任何全局 npmrc 配置 :eyes: (如 %AppData%\npm\etc\npmrc

或者,将设置复制到用户配置 %UserProfile%\.npmrc。删除现有的 npm 安装位置(如 %AppData%\npm)以防止全局模块冲突。

安装 nvm-windows

使用最新安装程序(附带卸载程序)。或者,按照手动安装指南进行操作。

如果 NVM4W 在安装后似乎不能立即工作,请重启终端/powershell(不是整个电脑)。

NVM for Windows 安装程序

重新安装任何全局工具

安装后,需要为每个已安装的 node 版本重新安装全局工具(如 yarn):

nvm use 14.0.0
npm install -g yarn
nvm use 12.0.1
npm install -g yarn

升级 nvm-windows

:bulb: 从 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 <版本> [架构]:版本可以是特定版本、"latest"表示最新当前版本,或"lts"表示最新LTS版本。可选择指定安装32位或64位版本(默认为系统架构)。将[架构]设为"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 <版本> [架构]:切换使用指定版本。可选用latestltsnewestnewest是最新安装的版本。可选指定32/64位架构。nvm use <架构>将继续使用所选版本,但切换到32/64位模式。关于在特定目录使用use(或使用.nvmrc)的信息,请参考issue #16
  • nvm root <路径>:设置nvm存储不同node.js版本的目录。如未设置<路径>,将显示当前根目录。
  • nvm version:显示当前运行的NVM for Windows版本。
  • nvm node_mirror <node镜像url>:设置node镜像。中国用户可使用https://npmmirror.com/mirrors/node/
  • nvm npm_mirror <npm镜像url>:设置npm镜像。中国用户可使用https://npmmirror.com/mirrors/npm/

:warning: 注意事项!

请注意,您可能安装的任何全局npm模块在不同版本的node.js之间不共享。此外,某些npm模块可能不支持您正在使用的node版本,因此在工作时请注意您的环境。

:name_badge: 防病毒软件

用户报告使用防病毒软件时遇到一些问题,特别是McAfee。似乎防病毒软件正在操纵对VBScript引擎的访问。详情和解决方案请参见issue #133

v1.1.8未进行代码签名,但所有其他版本均由Ecor Ventures LLC/Author.io签名。这应该有助于防止大多数防病毒软件的误报。

由于证书过期,v1.1.8+未进行代码签名(原因见发布说明)。v1.1.9已进行代码签名,感谢ajyong赞助了新证书。

使用Yarn

简而言之: npm i -g yarn

详情请参见wiki

从源代码构建

  • 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目录中查看生成的安装程序。

:bulb: 为什么要开发另一个版本管理器?

node.js有几个版本管理器。像nvmn这样的工具只在Mac OSX和Linux上运行。Windows用户被遗忘了吗?不是的。nvmwnodist都是为Windows设计的。那么,为什么要为Windows开发另一个版本管理器呢?

大多数Windows版node版本管理器的架构依赖于.bat文件,这些文件使用一些巧妙的技巧来设置或模拟环境变量。有些使用node本身(一旦下载),这很值得赞赏,但容易出现问题。大约在node 0.10.30左右,安装结构稍有变化,导致其中一些无法与任何新版本一起工作。

此外,一些用户在安装这些模块时遇到困难,因为它需要对node的安装结构有更多了解。我认为,如果人们能更容易地在版本之间切换,他们可能会花时间在以前和未来的版本上测试他们的代码...这是一个良好的实践。

:bulb: 有什么大的区别?

首先最重要的是,这个版本的nvm不依赖于node。它是用Go编写的,这是一种比在有限的.bat文件上进行黑客攻击更结构化的方法。它不依赖于现有的node安装。Go提供了在同一代码库上创建Mac/Linux版本的能力。事实上,这项工作已经在进行中。 控制机制也有很大的不同。有两种常见的方法可以支持多节点安装并具有热切换功能。第一种是在切换版本时修改系统的PATH,或者通过使用.bat文件来模拟node可执行文件并相应地重定向。这种方法在我看来总是有点黑客式的,而且由于这种实现方式会产生一些怪异的问题。

第二种选择是使用符号链接。这个概念需要将符号链接放入系统的PATH中,然后更新其目标到你想使用的node安装目录。这是一种直接的方法,似乎也是人们推荐的方法……直到他们意识到在Windows上创建符号链接有多麻烦。这就是为什么之前没有人这么做的原因。

为了创建/修改符号链接,你必须以管理员身份运行,并且必须绕过Windows UAC(那个烦人的提示)。幸运的是,这个挑战我已经在node-windows中用一些辅助脚本解决了。因此,Windows版NVM只在安装时在系统PATH中维护一个单一的符号链接。切换到不同版本的node只是切换符号链接的目标。结果是,这个工具要求你每次打开控制台窗口时都运行nvm use x.x.x。当你_确实_运行nvm use x.x.x时,node的活动版本会自动在所有打开的控制台窗口中更新。它还会在系统重启后保持,所以你只需要在想要做出改变时使用nvm。

Windows版NVM带有一个安装程序,这要归功于我在Fenix Web Server上工作的副产品。

总的来说,这个项目结合了一些想法,几个经过实战考验的其他模块的部分,以及对较新版本node的支持。

Windows版NVM使用Node项目提供的列表来识别"最新"版本。1.1.1+版本使用这个列表。在这个列表存在之前,我曾经抓取发布信息并将其作为独立的数据源提供。这个列表在1.1.0及之前的版本中使用,但现在已经废弃。

动机

我需要它,就是这么简单。此外,很明显对多版本的支持不会出现在node核心中。这也是一个玩Go的借口。

为什么选择Go?为什么不用Node?

我选择Go是因为它是跨平台的,感觉比Java的开销小,而且存在的时间比大多数人想象的要长。另外,我想尝试一下。有人问我为什么不用Node来写。用你试图安装的工具来写一个工具对我来说没有意义。因此,我对这个项目的要求很简单……选择一个不是Node的东西。Node将继续发展和变化。如果你需要提醒,请记住io.js、Ayo、4.x.x和6.x.x之间的所有破坏性变更,以及12+中向ES模块的转变。在软件世界中,变化是不可避免的。JavaScript是极其动态的。

:pray: 致谢

感谢所有在Github内外提交问题、提出建议,以及普遍帮助改进这个项目的人。特别感谢


贡献者

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号