nvm-windows

nvm-windows

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

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

NVM for WindowsNode.js版本管理Windows安装Github开源项目
<div align="center"><h2>注意:我们已经开始全职开发 <a href="https://github.com/coreybutler/nvm-windows/wiki/Runtime">Runtime</a>,这是 NVM for Windows 的继任者。</h2>请填写<a href="https://t.co/oGqQCM9FPx">此表单</a>以提供您的想法并订阅进度更新。<br/><br/>更新也将发布在 <A href="https://linkedin.com/company/authorsoftware">Author Software LinkedIn 页面</a>上。</div> <br/><br/> <h1 align="center">Windows 版 NVM</h1> <div align="center"> <a href="https://docs.microsoft.com/en-us/windows/nodejs/setup-on-windows">Microsoft</a>、<a href="https://docs.npmjs.com/cli/v9/configuring-npm/install#windows-node-version-managers">npm</a> 和 <a href="https://cloud.google.com/nodejs/docs/setup#installing_nvm">Google</a> 推荐的 <em>Windows</em> Node.js 版本管理器。<br/> <details> <summary><b>这与 nvm 不是同一个东西!</b>(展开查看详情)</summary>

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

</details>

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

</div> <h5 align="center">赞助商</h5> <div align="center"> <table cellpadding="5" cellspacing="0" border="0" align="center"> <tr> <td><a href="https://linkedin.com/company/authorsoftware"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/c4d51ec1-afce-4ae1-8318-78c91f2a1d6c.png" width="200px"/></a></td> <td><a href="https://enabledb.com"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/22c0b13b-e080-435e-8fe4-a84581c1019d.png" width="200px"/></a></td> <td><a href="https://butlerlogic.com"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/b69dc9db-bc17-4c14-b7b1-b03a823faf10.png" width="200px"/></a></td> <td width="25%" align="center"><a href="https://github.com/microsoft"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/f0795455-42e2-4438-ba5d-6d155e611bdd.png" height="30px"/></a></td> </tr> <tr> <td colspan="4" align="center"> <a href="https://github.com/sponsors/coreybutler"><img src="https://img.shields.io/github/sponsors/coreybutler?label=Individual%20Sponsors&logo=github&style=social"/></a> &nbsp;<a href="https://github.com/sponsors/coreybutler"><img src="https://img.shields.io/badge/-Become%20a%20Sponsor-yellow"/></a> </td> </tr> <tr> <td colspan="4" align="center"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/859b3d6a-883d-4f1e-8630-87b42cc35e3f.png" width="50"/><br/> <b>无法赞助?</b><br/>考虑<a href="https://stars.github.com/nominate/" target="_blank">提名@coreybutler获得Github之星</a>。 </td> </tr> </table> </div> <br/> <div align="center"><b>遇到问题?</b>请查看<a href="https://github.com/coreybutler/nvm-windows/wiki/Common-Issues">常见问题wiki</a>。</div> <br/> <table style="background-color:red;padding:6px;border-radius:3px;"> <tr><td> <h3>征求反馈:</h3> 我们正在开发<a href="https://github.com/coreybutler/nvm-windows/wiki/Runtime">Runtime (rt)</a>,这是NVM For Windows的后继版本。请花一分钟时间填写<a href="https://t.co/oGqQCM9FPx">此表单</a>来提供反馈。谢谢! <h3></h3> </td></tr> </table>

概述

在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内外提交问题、提出建议,以及普遍帮助改进这个项目的人。特别感谢

<br/>

贡献者

编辑推荐精选

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多