如何从0开始将vscode源码编译、运行、打包桌面APP

server/2025/2/13 9:26:23/

**

网上关于此的内容很少,今天第二次的完整运行了,按照下文的顺序走不会出什么问题。最重要的就是环境的安装,否则极其容易报错,请参考我的依赖版本以及文末附上的vscode官方指南

**

第一步:克隆 VSCode 源码

首先,你需要从 GitHub 克隆 VSCode 的源代码。注意:如果你直接下载 .zip 文件,编译可能会报错,推荐使用 Git 克隆。

git clone https://github.com/Microsoft/vscode.git
cd vscode

第二步:安装依赖

要成功构建 VSCode,首先需要安装一些必要的依赖项。

  1. Node.js:我使用的是 Node.js 版本 20.18.2。建议使用nvm管理node版本,理论上要求>=20。

  2. Python:我使用的是 Python 3.13.2 版本,Python 是一些依赖编译的要求工具。可以从 Python 官网 下载并安装。

  3. Visual Studio 2022:为了支持 C++ 编译,你需要安装 Visual Studio 2022 并确保启用了 C++ 相关的构建工具。可以从 Visual Studio 官网 获取。安装的最小工作量为Desktop Development with C++。但“单个组件”中还有其他组件:
    MSVC v143 - VS 2022 C++ x64/x86 Spectre-mitigated libs (Latest)(用于ARM64ARM 上的 Windows,但可能仍然需要 x64/x86)
    C++ ATL for latest build tools with Spectre Mitigations
    C++ MFC for latest build tools with Spectre Mitigations
    打开命令提示符并运行npm config edit并添加或修改msvs_version与您的 vs 版本相同的设置。(例如msvs_version=2022对于 visual studio 2022)
    注意项目的路径全英文即可别带空格符号之类的像()就不行会报错,报错内容就不贴了大家注意就行

第三步:安装项目依赖

安装好所有的工具后,你可以开始安装 VSCode 项目的依赖:

npm install
npm install -g node-gyp

node-gyp 是一个构建工具,用于编译 Node.js 原生模块,它是 VSCode 项目的一部分,因此需要全局安装。

第四步:运行 VSCode

在你的vscode中打开源码文件夹运行以下命令
安装完依赖后,运行以下命令启动编译:

npm run watch

注意了,正常的情况应该是没有错误的,如果你之前删除lock.json或者使用--force之类的下载命令是可以正常调试,但是如果你要打包成桌面App的时候就欲哭无泪了,会各种失败,建议就是不要做这些高危操作!
然后根据你的操作系统,执行以下脚本:

  • Windows:执行 ./scripts/code.bat
  • MacOS 和 Linux:执行 ./scripts/code.sh

小技巧:快速刷新开发版本

当你成功启动开发版本的 VSCode 后,可以使用快捷键 Ctrl + R 来刷新页面,避免每次修改后都需要重新启动 VSCode。这可以极大提高开发效率。
注意了,相当于热更新的作用,注意是在开发的vscode中使用此快捷键。默认的快捷键就是这个Ctrl + R

第五步:运行 VSCode(可选)

这里有一个大坑,这个打包的过程根据电脑的性能,最低也得半小时起步,而我之前运行的是最小化版本: npm run gulp vscode-win32-x64-min

解释:

  • npm run gulp vscode-win32-x64 是用来构建 完整的 Windows 64 位桌面版本,它会生成一个可以运行的可执行文件(.exe 文件)以及其他相关文件,最终你可以使用它来启动修改后的 VSCode 桌面应用。

  • npm run gulp vscode-win32-x64-min 是构建 最小化版本 的命令,它不会生成你期望的完整桌面应用,而是生成一个更小、更精简的版本,主要用于发布或者是为了测试轻量级功能。

如果你想打包成桌面APP,以上按照文章的步骤执行的话,这一步没有问题
VS Code 可以为以下平台打包:win32-ia32 | win32-x64 | darwin-x64 | darwin-arm64 | linux-ia32 | linux-x64 | linux-arm

gulp有以下任务可用:

vscode-[platform]:为 构建一个打包版本[platform]。
vscode-[platform]-min:为 构建打包和缩小的版本[platform]。
👉提示!运行gulpvianpm以避免潜在的内存不足问题,例如npm run gulp vscode-linux-x64
比如我想打包成Windows系统的APP,执行:npm run gulp vscode-win32-x64

版本信息

以下是版本名称的小结:

  • Node.js 版本:20.18.2
  • Python 版本:3.13.2
  • node-gyp 版本:v11.1.0

参考文档

官方文档中提供了更详细的贡献指南,可以参考 如何贡献 VSCode 了解更多。


通过上述步骤,你应该能够成功地从源码编译并运行 VSCode。遵循这些步骤并确保环境配置正确,将帮助你顺利启动开发工作!


http://www.ppmy.cn/server/167291.html

相关文章

HTML之JavaScript分支结构

HTML之JavaScript分支结构 if switch <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</t…

Transformer解码器终极指南:从Masked Attention到Cross-Attention的PyTorch逐行实现

Transformer 解码器深度解读 代码实战 1. 解码器核心作用 Transformer 解码器的核心任务是基于编码器的语义表示逐步生成目标序列&#xff08;如翻译结果、文本续写&#xff09;。它通过 掩码自注意力 和 编码器-解码器交叉注意力&#xff0c;实现自回归生成并融合源序列信息…

PlantUml常用语法

PlantUml常用语法&#xff0c;将从类图、流程图和序列图这三种最常用的图表类型开始。 类图 基础语法 在 PlantUML 中创建类图时&#xff0c;你可以定义类&#xff08;Class&#xff09;、接口&#xff08;Interface&#xff09;以及它们之间的关系&#xff0c;如继承&#…

MapReduce简单应用(三)——高级WordCount

目录 1. 高级WordCount1.1 IntWritable降序排列1.2 输入输出格式1.3 处理流程 2. 代码和结果2.1 pom.xml中依赖配置2.2 工具类util2.3 高级WordCount2.4 结果 参考 本文引用的Apache Hadoop源代码基于Apache许可证 2.0&#xff0c;详情请参阅 Apache许可证2.0。 1. 高级WordCo…

Haskell语言的云计算

Haskell语言与云计算&#xff1a;结合高阶函数与分布式系统的力量 引言 云计算作为现代计算技术的重要组成部分&#xff0c;已经渗透到我们生活的方方面面。随着技术的不断进步&#xff0c;许多编程语言也开始了它们在云计算领域的探索与实践。Haskell作为一种具有强大类型系…

CP AUTOSAR标准之GPTDriver(AUTOSAR_SWS_GPTDriver)(更新中……)

1 简介和功能概述 该规范指定了AUTOSAR基础软件模块GPT驱动程序的功能、API和配置。   GPT驱动程序是微控制器抽象层(MCAL)的一部分。它初始化并控制微控制器的内部通用定时器(GPT)。   GPT驱动程序提供服务和配置参数 启动和停止硬件计时器获取计时器值控制时间触发的中断…

【Modelsim】medelsim查看仿真覆盖率的方法

最近做项目的时候需要对代码进行仿真覆盖率的分析&#xff0c;那么如何添加仿真覆盖率呢?配置方法如下。 如上图所示进行配置&#xff0c;在调用modelsim的时候就可以显示仿真覆盖率&#xff0c;如下图所示就是modesim的仿真覆盖率。

嵌入式AI革命:DeepSeek开源如何终结GPU霸权,开启单片机智能新时代?

2025年&#xff0c;全球AI领域最震撼的突破并非来自算力堆叠的超级模型&#xff0c;而是中国团队DeepSeek通过开源策略&#xff0c;推动大模型向微型化、低功耗场景的跨越。相对于当人们还在讨论千亿参数模型的训练成本被压缩到600万美金而言&#xff0c;被称作“核弹级别”的操…