学习路径指南
难度等级
中级
预计时长
2-3天
适合人群
有一定TypeScript/JavaScript基础,对Electron或大型IDE/编辑器开发感兴趣,想了解VS Code内部机制或为其贡献代码的开发者。

学习目标:能够成功在本地构建并运行VS Code源代码,理解其核心项目结构,并能定位和修改一些简单的代码问题。

前置知识

Git 熟悉

用于克隆代码仓库、切换分支和提交代码。

Node.js 和 npm/yarn 熟悉

VS Code基于Node.js环境构建,依赖管理、脚本执行和构建过程都离不开它。

TypeScript/JavaScript 熟悉

VS Code的核心代码使用TypeScript编写,理解其语法是阅读和修改代码的基础。

Electron (了解) 了解 (可选)

VS Code是基于Electron的桌面应用,了解其主进程/渲染进程架构有助于理解项目结构。

学习步骤

1

环境准备与代码获取

1-2小时

安装必备工具

确保系统已安装Git、Node.js(建议LTS版本)和Python(用于编译原生模块)。

在终端运行 `node -v` 和 `npm -v` 检查版本。Windows用户可能需要安装构建工具(如windows-build-tools)。

克隆代码仓库

使用Git克隆VS Code的官方仓库到本地。命令:`git clone https://github.com/microsoft/vscode.git`

仓库较大,克隆可能需要一些时间。可以考虑使用 `--depth 1` 先克隆最近一次提交以加快速度。

安装项目依赖

进入项目根目录 (`cd vscode`),运行 `npm install` 或 `yarn` 安装所有依赖包。

依赖非常多,安装过程耗时较长,请耐心等待。确保网络通畅。

2

首次构建与运行

1-2小时

执行编译任务

运行项目根目录下的编译脚本。通常命令是 `npm run compile` 或 `yarn compile`。

这是将TypeScript代码编译成JavaScript的关键步骤。首次编译时间较长。观察终端输出,确保没有报错。

启动开发版本

编译成功后,运行 `npm run watch` 启动监视模式(代码改动后自动重编译),然后在另一个终端运行 `npm run electron` 启动VS Code的开发版本。

`npm run watch` 会持续运行并监听文件变化。`npm run electron` 会启动一个基于你源代码的VS Code实例。

验证运行成功

观察启动的VS Code窗口。标题栏通常会包含“开发人员”或类似字样,表示你正在运行自己构建的版本。

尝试打开一个文件或文件夹,确保基本编辑功能正常。

3

探索项目结构与开发流程

3-4小时

阅读核心目录

浏览项目根目录下的关键文件夹:`src/vs`(核心源代码)、`extensions`(内置扩展)、`scripts`(构建脚本)。

重点关注 `src/vs/editor`(编辑器核心)、`src/vs/workbench`(工作台UI)。README中提到的 `extensions` 文件夹也值得一看。

学习开发工作流

仔细阅读项目根目录下的 `CONTRIBUTING.md` 或 `docs/contributing` 文件夹内的文档,了解代码规范、调试和测试方法。

这是官方贡献指南,是理解项目开发流程的圣经。即使不立刻贡献,也能帮你理解项目。

尝试运行测试

选择一个简单的测试来运行,例如在终端执行 `npm run test` 或更具体的测试子集命令,观察测试过程。

首次运行测试可能较慢。可以从单元测试开始,而不是端到端测试。

4

实践:定位与修改

3-5小时

寻找一个入门级Issue

访问GitHub仓库的Issues页面,使用标签过滤器(如 `good first issue`, `help-wanted`)寻找一个描述清晰、难度较低的问题。

README中提到了可以通过标签筛选issue。选择涉及UI文本修改、简单功能调整的问题开始。

理解问题并定位代码

仔细阅读Issue描述和评论。根据问题描述的关键词,在项目代码中使用搜索功能(如VS Code本身的搜索或grep)定位相关代码文件。

善用VS Code强大的代码搜索和跳转功能。查看相关代码的git历史记录也有助于理解。

进行修改并测试

在本地进行代码修改。修改后,确保重新编译(如果没开watch则需手动`npm run compile`),然后重启开发版VS Code (`npm run electron`) 验证修改是否生效。

修改后,运行相关的单元测试以确保没有破坏现有功能。保持修改尽量小且专注。

推荐资源

项目根目录的 CONTRIBUTING.md 文档 必看

最权威的贡献指南,详细说明了如何构建、调试、测试和提交代码。

VS Code Wiki (GitHub) 推荐

包含项目架构、开发流程、相关项目列表等丰富信息。

GitHub Issues 和 Discussions 推荐

在这里可以查看他人遇到的问题、参与讨论、寻找可贡献的议题。

“VS Code 扩展开发”官方文档 可选

虽然主要讲扩展开发,但其中对VS Code API和架构的解释有助于理解主项目。

常见错误与避坑指南

1

Node.js版本不匹配

使用项目推荐的Node.js版本(通常在 `.github` 或根目录配置文件中注明),避免因版本过高或过低导致依赖安装或构建失败。

2

依赖安装不完整或网络问题

确保使用稳定的网络,如果 `npm install` 失败,可以尝试清除npm缓存 (`npm cache clean --force`),或使用 `yarn`,或配置国内镜像源。

3

未运行编译步骤直接启动

在运行 `npm run electron` 前,务必先成功执行 `npm run compile`。开发时使用 `npm run watch` 可以避免手动重复编译。

4

直接修改 `src` 下的编译输出文件

所有源代码修改都应在 `src/` 目录下的 `.ts` 文件中进行,编译后的 `.js` 文件在 `out/` 或类似目录,切勿直接修改后者。

5

选择了过于复杂的Issue作为起点

新手应从标记为 `good first issue` 或 `help-wanted` 的简单问题开始,避免涉及复杂架构或核心算法的问题,以免受挫。

下一步探索

1. 深入研究特定模块:如编辑器(`vs/editor`)、语言服务(`vs/language`)、调试器。2. 学习并尝试为项目添加一个简单的功能或修复一个稍复杂的Bug。3. 了解VS Code的扩展API,并尝试开发一个自己的扩展,这能加深对主程序架构的理解。4. 参与代码审查,学习他人的优秀代码和设计思路。

助手