Bootstrap

【vscode源码】如何编译运行vscode及过程中问题解决

Visual Studio Code(VSCode)作为一款流行的开源编辑器,市面上很多基于vscode的套壳APP,本文将详细介绍如何编译和运行VSCode的源码,并总结一些常见问题以及解决方案,帮助开发者顺利二次开发。


1. 准备工作(Node.js、Python、C++)

在开始编译之前,我们需要确保系统上安装了一些必要的软件和工具:

1.1 安装Node.js与npm

VSCode是基于Electron构建的,而Electron是一个框架,它依赖于Node.js来处理应用的后端功能。因此,首先需要安装Node.js和npm(Node包管理器)。可以通过以下步骤安装:

  • 访问 Node.js官网 下载并安装LTS版本。

  • 安装完成后,打开终端(Terminal),通过以下命令验证安装是否成功:

    node -v
    npm -v
    

    如果输出版本号,说明安装成功。建议node版本>=20.x

1.2 安装Python和C++构建工具

VSCode的编译过程需要Python以及C++的构建工具,因此需要确保系统中已安装Python(版本>=3.6)和Visual Studio Build Tools。

Windows 10/11(x64 或 ARM64)
  1. 安装 Visual C++ 构建环境:

    • 通过安装 Visual Studio 构建工具或 Visual Studio 社区版来安装 Visual C++ 构建环境。
    • 安装的最小工作量为 Desktop Development with C++,但在“单个组件”中可能还需要其他组件:
      • MSVC v143 - VS 2022 C++ x64/x86 Spectre-mitigated libs (Latest)(适用于 ARM64 及 ARM 上的 Windows,但可能仍然需要 x64/x86)
      • C++ ATL for latest build tools with Spectre Mitigations
      • C++ MFC for latest build tools with Spectre Mitigations
        在这里插入图片描述
  2. 配置 Node.js 构建工具:

    • 打开命令提示符并运行 npm config edit,添加或修改 msvs_version 配置项,与您的 Visual Studio 版本相同。例如:
      msvs_version=2022
      
    • 警告: 确保您的配置文件路径仅包含 ASCII 字母字符(例如 John),否则可能会导致 node-gyp 使用问题(参考 nodejs/node-gyp/issues#297)。
  3. 注意:

    • 当前不支持通过 Windows 的 Linux 子系统(WSL)进行构建和调试。
    • 如果需要在 Windows 上使用 WSL2,请参考 Selfhosting-on-Windows-WSL
macOS
  1. 安装 Xcode 和命令行工具:
    • 安装 gcc 并包含相关工具链(如 make)。
    • 运行以下命令安装命令行工具:
      xcode-select --install
      
Linux
  1. 在基于 Debian 的 Linux 上:

    • 执行以下命令安装构建工具和依赖:
      sudo apt-get install build-essential g++ libx11-dev libxkbfile-dev libsecret-1-dev libkrb5-dev python-is-python3
      
  2. 在基于 Red Hat 的 Linux 上:

    • 执行以下命令安装开发工具和依赖:
      sudo yum groupinstall "Development Tools" && sudo yum install libX11-devel.x86_64 libxkbfile-devel.x86_64 libsecret-devel krb5-devel # 或者 .i686
      
其他的:
  1. 安装依赖:

    • 安装 makepkg-configGCC 或其他编译工具链。
  2. 构建 deb 和 rpm 包:

    • 需要 fakerootrpm
      sudo apt-get install fakeroot rpm
      

建议Python版本使用3.8

2. 获取VSCode源码

2.1 克隆VSCode的源码

VSCode的源码托管在GitHub上,因此可以通过Git来克隆项目:

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

执行这两条命令后,VSCode的源代码将被克隆到本地,并进入项目目录。

2.2 切换到稳定分支(可选)

默认情况下,git clone 克隆的项目会指向最新的开发分支。如果你希望编译一个稳定版本,可以切换到稳定分支:

git checkout -b stable origin/stable

这样可以确保你编译的是最新的稳定版本。

3. 安装依赖

VSCode的源代码包含大量的依赖包,编译时需要安装这些依赖。在项目根目录中运行以下命令:

npm install

这条命令会根据package.json文件中的依赖信息,自动下载和安装所有依赖包。这个过程可能需要一些时间,具体取决于网络环境和电脑性能。

4. 编译VSCode

4.1 运行编译命令

安装完所有依赖后,VSCode的源码就可以开始编译了。运行以下命令开始编译过程:

npm run watch

此命令会启动一个监听过程,当代码发生变化时,自动重新编译。在编译过程中,终端会显示相关的编译信息。

4.2 编译完成后的启动

编译完成后,可以运行VSCode,验证是否编译成功。运行以下命令启动编译后的VSCode:

# Windows
./scripts/code.bat
# MacOS & Linux
./scripts/code.sh

5. 常见问题与解决方法

在编译VSCode的过程中,开发者可能会遇到一些问题。以下是一些常见问题和解决方案。

在这里插入代码片
5.1 问题:编译过程中出现内存不足错误

在运行npm run watch时,如果遇到内存不足错误,可以通过调整Node.js的内存限制来解决。修改命令如下:

node --max-old-space-size=8192 ./node_modules/gulp/bin/gulp.js watch

通过--max-old-space-size=8192,将Node.js的最大内存设置为8GB,这通常可以解决内存不足的错误。

5.2 问题:安装依赖时网络问题

在国内,有时因为网络问题,npm install 会下载失败。可以尝试使用淘宝镜像来加速下载依赖:

npm config set registry https://registry.npm.taobao.org

这样设置后,所有的npm命令都会使用淘宝的镜像源进行下载。

5.3 问题:node-gyp 错误

安装 Visual Studio 并确保选择了 C++ 桌面开发 工作负载。这是编译原生 Node 模块所必需的。
安装好 Visual Studio 后,可以重新运行 npm install。

5.4 问题:版本冲突或依赖错误

有时,npm install 可能会因为某些依赖版本冲突而失败。解决方法可以尝试以下命令清空缓存并重新安装:

npm cache clean --force
npm install

如果依然存在版本冲突,可以考虑删除node_modules目录和package-lock.json文件后再重新安装。

5.5 问题:无法删除某些目录(EBUSY 错误)

使用管理员权限来执行命令

5.6 问题:运行./scripts/code.bat命令后弹窗报错

使用管理员权限来执行命令
watch命令后多等会再执行,并且电脑配置不能太低尤其是内存,多试几次,概率问题

6. 自定义修改与二次开发

在成功编译并运行VSCode后,开发者可以根据自己的需求对VSCode进行二次开发或自定义修改。例如:

  • 修改主题:你可以根据需要修改VSCode的界面主题、字体或颜色等样式。
  • 添加插件:你可以开发自己的VSCode插件,并将其集成到你的本地版本中。
  • 调试功能:如果你需要调试某些功能,可以通过VSCode自带的调试工具进行调试。

7. 总结

本文详细介绍了如何编译和运行VSCode源码的步骤,并总结了在过程中可能遇到的常见问题以及解决方法。希望通过这些内容,能够帮助开发者更顺利地进行VSCode源码的编译和二次开发。

参考资料:

vscode 定制开发 —— 基础准备

编译运行VSCode源码

Contributing to Visual Studio Code

;