如何从0开始将vscode源码编译、运行、打包桌面APP
**
网上关于此的内容很少,今天第二次的完整运行了,按照下文的顺序走不会出什么问题。最重要的就是环境的安装,否则极其容易报错,请参考我的依赖版本以及文末附上的vscode官方指南
**
第一步:克隆 VSCode 源码
首先,你需要从 GitHub 克隆 VSCode 的源代码。注意:如果你直接下载 .zip 文件,编译可能会报错,推荐使用 Git 克隆。
git clone https://github.com/Microsoft/vscode.git
cd vscode
第二步:安装依赖
要成功构建 VSCode,首先需要安装一些必要的依赖项。
-
Node.js:我使用的是 Node.js 版本 20.18.2。建议使用nvm管理node版本,理论上要求>=20。
-
Python:我使用的是 Python 3.13.2 版本,Python 是一些依赖编译的要求工具。可以从 Python 官网 下载并安装。
-
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。遵循这些步骤并确保环境配置正确,将帮助你顺利启动开发工作!
相关文章:
如何从0开始将vscode源码编译、运行、打包桌面APP
** 网上关于此的内容很少,今天第二次的完整运行了,按照下文的顺序走不会出什么问题。最重要的就是环境的安装,否则极其容易报错,请参考我的依赖版本以及文末附上的vscode官方指南 ** 第一步:克隆 VSCode 源码 首先…...
亚冬会绽放“云端”,联通云如何点亮冰城“科技之光”?
科技云报到原创。 35年前,中国第一次承办亚运会,宣传曲《亚洲雄风》红遍大江南北,其中有一句“我们亚洲,云也手握手”。如今回看,这句话仿佛有了更深的寓意:一朵朵科技铸就的“云”,把人和人连…...
网络安全ids是什么意思
1、 简述IPS和IDS的异同点; 入侵检测系统(IDS) IDS(Intrusion Detection Systems,入侵检测系统),专业上讲就是依照一定的安全策略,对网络、系统、运行状况进行监视,尽可能…...
ASP.NET Core程序的部署
发布 不能直接把bin/Debug部署到生产环境的服务器上,性能低。应该创建网站的发布版,用【发布】功能。两种部署模式:“框架依赖”和“独立”。独立模式选择目标操作系统和CPU类型。Windows、Linux、iOS;关于龙芯。 网站的运行 在…...
优选驾考小程序
第2章 系统分析 2.1系统使用相关技术分析 2.1.1Java语言介绍 Java语言是一种分布式的简单的 开发语言,有很好的特征,在安全方面、性能方面等。非常适合在Internet环境中使用,也是目前企业级运用中最常用的一个编程语言,具有很大…...
42.水果销售系统(springbootvue的Java项目[含微信小程序])
目录 1.系统的受众说明 2.开发环境与技术 2.1 MYSQL数据库 2.2 Java语言 2.3 微信小程序技术 2.4 SpringBoot框架 2.5 B/S架构 2.6 Tomcat 介绍 2.7 HTML简介 2.8 MyEclipse开发工具 3.系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 经济可行性 3.1.3 操作…...
ffmpeg所有版本下载地址
地址如下:Index of /releaseshttps://ffmpeg.org/releases/...
记PasteSpider部署工具的Windows.IIS版本开发过程之草稿-效果展示(4)
如果有人给你一串JSON数据,你需要编辑他,对于有开发基础的人来说,可能会好处理下,而对于没有开发基础的人来说,那就是灾难了! 那么有没有一个东西,可以让这个编辑更顺畅呢? 贴代码案例中的DynamicForm你值得拥有!本次展示作者在本机上操作IIS的示例,如下 IIS展示 先…...
Docker 网络的配置与管理
目录 查看所有网络 查看网络详细信息 创建新的网络 删除网络 清理未使用的网络 将容器连接到网络 将容器从网络中断开 将容器端口映射到宿主机 绑定到特定 IP 地址 为容器设置自定义 DNS 查看所有网络 docker network ls 功能:列出所有 Docker 网络。 工…...
3D文档控件Aspose.3D实用教程: 在 Java 中创建 FBX 文件并无缝将圆柱体转换为网格
概述 创建FBX文件并将圆柱体转换为网格是 3D 建模和动画中的基本任务。这些过程在游戏、电影和建筑等行业中至关重要。通过使用Aspose.3D for Java ,开发人员可以高效地管理 3D 场景和对象。这个强大的 Java 3D API 简化了 3D 模型的创建和操作。它的易用性和灵活性…...
软考高级《系统架构设计师》知识点(一)
计算机硬件 校验码 码距:就单个编码A:00而言,其码距为1,因为其只需要改变一位就变成另一个编码。在两个编码中,从A码到B码转换所需要改变的位数称为码距,如A:00要转换为B:11,码距为2。一般来说,…...
HTML 学习记录
HTML 学习记录 html是超文本标记语言,是一种标记语言 超文本:链接 标记:也叫标签,带尖括号的文本 标签语法 1.标签成对出现,中间包裹内容 2.<>里面放英文字母 3.结束标签比开始标签多一个 / 例如 <s…...
Mac之JDK安装
Mac之JDK安装 一.安装 jdk 打开终端输入命令:java -version 查看是否已安装 JDK Oracle 官方下载地址 根据自己Mac 系统安装 查看 Mac 系统,打开中断命令,输入: uname -a Compressed Archive 是压缩文档,下载的是一个 .tar.gz 压缩包 D…...
centos 10 离线安装dnf 和 设置dnf镜像源
离线安装dnf可用kimi搜索, centos 使用curl 下载dnf 的rpm包 mkdir ~/dnf_packages cd ~/dnf_packages# CentOS 7 示例 curl -O http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/dnf-0.6.4-2.sdl7.noarch.rpm curl -O http://springdale.math.ias.edu/data/pu…...
【cocos creator】拖拽排序列表
DEMO下载 GameCtrl.ts import ItemCtrl from "./ItemCtrl";const { ccclass, property } cc._decorator;ccclass export default class GameCtrl extends cc.Component {property(cc.Node)content: cc.Node null;property(cc.Node)prefab: cc.Node null;arr []…...
设备智能化无线通信,ESP32-C2物联网方案,小尺寸芯片实现大功能
在科技飞速发展的当下,我们的生活正被各类智能设备悄然改变,它们如同一位位无声的助手,渗透到我们生活的每一个角落,让生活变得更加便捷和丰富多彩。 智能插座、智能照明和简单家电设备在家居领域的应用,为我们的生活…...
C# Task 学习记录
在 C# 中,Task是用于表示异步操作的核心类型之一,提供了一种简单、高效的方式来处理异步操作,使得开发者可以轻松地编写非阻塞的代码。下面是C# Task例子,包含取消、超时、延续任务、获取任务执行情况: using System;…...
HTML 链接
HTML 链接 引言 HTML(超文本标记语言)是构建网页的基础,而链接是网页中不可或缺的元素。链接不仅能够连接到其他网页,还能实现网页内部内容的跳转。本文将详细介绍HTML链接的用法、属性以及如何实现链接的优化。 HTML链接的基本…...
Unity 增量打包AssetBundle
背景 打包太慢了,想要没改动的资源不重新打包浪费时间。 来源 官方文章:https://forum.unity.com/threads/about-incremental-build-and-asset-bundle-hashes.1436032/ 官网AB介绍:https://learn.unity.com/tutorial/assets-resources-and…...
MYSQL实现原理 - 事务的隔离级别
版本 版本日期说明v12025-02-10 准备 为后续故事的顺利展开,这里创建一个账户表 create database test;CREATE TABLE test.account (user_id int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 用户ID,user_name varchar(200) NOT NULL DEFAULT COMMENT 用户名…...
如何在Kickstart自动化安装完成后ISO内拷贝文件到新系统或者执行命令
如何在Kickstart自动化安装完成后ISO内拷贝文件到新系统或者执行命令 需求 在自动化安装操作系统完成后,需要对操作系统进行配置需要拷贝一些文件到新的操作系统中需要运行一些脚本 问题分析 Linux安装操作系统时,实际上是将ISO镜像文件中的操作系统…...
PHP 调用 SiliconFlow 语音生成 API 的脚本,用于将文本转换为 MP3 格式的语音文件
脚本概述 PHP 调用 SiliconFlow 语音生成 API 的脚本,用于将文本转换为 MP3 格式的语音文件。 代码结构 依赖引入 require_once vendor/autoload.php; use OpenAI\Client;使用 Composer 的自动加载机制引入 OpenAI PHP 客户端库 文件路径处理 $speechFilePath…...
具身智能训练新思路!将生成视频用于训练机器人
将生成视频用于训练具身智能(Embodied AI)确实是近年来备受关注的前沿方向,这一思路通过结合生成式AI(如扩散模型、神经辐射场等)与机器人学习,为解决真实世界数据稀缺、训练成本高等问题提供了新可能。以下从技术逻辑、潜在优势、挑战及案例方向展开分析: 一、技术逻辑…...
MindStudio制作MindSpore TBE算子(四)算子测试(ST测试-Ascend910B/ModelArts)--失败尝试
上一节,MindStudio制作MindSpore TBE算子(三)算子测试(ST测试),因此缺乏对应的硬件环境导致无法进行ST测试,导致难以自安,今天搞来Ascend910B服务器来填坑,看看是否是硬件…...
transformer 基础知识
概要:简要记录 Encoder-Decoder 架构、seq2seq 模型、Attention 机制 Encoder & Decoder encoder 接收输入,生成一个固定长度的上下文向量(编码器生成的最终隐藏状态);decoder 接收上下文向量(或状态…...
基于 STM32 的病房监控系统
标题:基于 STM32 的病房监控系统 内容:1.摘要 基于 STM32 的病房监控系统摘要:本系统采用 STM32 微控制器作为核心,通过传感器实时监测病房内的环境参数,如温度、湿度、光照等,并将数据上传至云端服务器。医护人员可以通过手机或…...
DeepSeek底层揭秘——知识图谱与语料库的联邦学习架构
目录 1. 知识图谱与语料库的联邦学习架构 2. 技术要素 3. 技术难点与挑战 4. 技术路径 5. 应用场景 6. 最新研究与技术进展 7. 未来趋势 8. 实际案例 猫哥说 1. 知识图谱与语料库的联邦学习架构 (1) 定义 “知识图谱与语料库的联邦学习架构”是一种结合知识图谱&…...
C++--iomanip库
目录 1. 设置字段宽度:std::setw() 2. 设置浮点数精度:std::setprecision() 3. 设置填充字符:std::setfill() 4. 控制对齐方式:std::left 和 std::right,std::internal 5. 控制进制输出:std::hex、std…...
机器学习(李宏毅)——self-Attention
一、前言 本文章作为学习2023年《李宏毅机器学习课程》的笔记,感谢台湾大学李宏毅教授的课程,respect!!! 二、大纲 何为self-Attention?原理剖析self-Attention VS CNN、RNN、GNN 三、何为self-Attenti…...
Android和DLT日志系统
1 Linux Android日志系统 1.1 内核logger机制 drivers/staging/android/logger.c static size_t logger_offset( struct logger_log *log, size_t n) { return n & (log->size - 1); } 写的off存在logger_log中(即内核内存buffer)&am…...
