vscode源码分析【一】从源码运行vscode
安装git,nodejs和yarn
安装Python27,3.x版本的不行,确保它在你的环境变量里;
安装gulp
npm install --global gulp-cli
安装windows build tools:
npm install --global windows-build-tools --vs2015
安装node-gyp
npm install -g node-gyp
上面安装的一大堆东西,看似没无关,其实他们大都是用来编译原生nodejs插件的,
nodejs的原生插件不是基于2进制分发的,是源码分发的,需要开发者自己编译;
下载vscode的源码;
用管理员的方式打开powershell,不是管理员身份不行
在源码根目录下执行:yarn,安装项目依赖的包,运行之前确保你处于FQ状态
这行命令执行时,需要下载electron,会比较耗时;
执行
yarn watch
这行会执行构建工作;直到你看到如下输出,说明构建成功了!
Finished compilation with 0 errors after
看到这一行后,构建命令并没有退出;
它会监视vscode源码文件的变化,如果有变化,它会马上执行增量的构建,实时反映源码变化的结果,赞!
用管理员身份另起一个powershell,执行
.\scripts\code.bat
这行命令又会给你下载electron;
如果你不想下载,看看code.bat文件,会发现:
:: Download Electron if needed
node build\lib\electron.js
打开这个文件,你会发现:
// returns 0 if the right version of electron is in .build/electron
分析electron.js会发现,它需要的electron的版本号在根目录下的.yarnrc文件中有配置
disturl "https://atom.io/download/electron"
target "4.2.4"
runtime "electron"
vscode用的electron版本不够新,我的“想学吗”都用到5.0.2了,它还在4.2.4,
这个版本对有些原生组件兼容的不太好,比如:这个issue
刚发现这个issue在今年4月底的时候,被这个pr解决了,哈,当我没说!
如果你想加快下载速度,你可以到淘宝的electron镜像去下载相应的版本,
下载的压缩包,解压后放到这个目录下.build/electron即可;
我发现vscode没有用electron的ffmpeg.dll,而是用了一个体积更小的ffmpeg.dll,
具体是因为BUG还是因为更小的体积,先不去深究。
运行起来后是这个样子的(注意,它的图标和title都和你下载的发行版是不一样的)

如果要调试主进程的话,可以看下图,直接在主进程的代码里下断点即可

vscode源码分析【一】从源码运行vscode的更多相关文章
- NIO 源码分析(05) Channel 源码分析
目录 一.Channel 类图 二.begin 和 close 是什么 2.1 AbstractInterruptibleChannel 中的 begin 和 close 2.2 Selector 中 ...
- NIO 源码分析(02-2) BIO 源码分析 Socket
目录 一.BIO 最简使用姿势 二.connect 方法 2.1 Socket.connect 方法 2.2 AbstractPlainSocketImpl.connect 方法 2.3 DualSt ...
- NIO 源码分析(02-1) BIO 源码分析
目录 一.BIO 最简使用姿势 二.ServerSocket 源码分析 2.1 相关类图 2.2 主要属性 2.3 构造函数 2.4 bind 方法 2.5 accept 方法 2.6 总结 NIO ...
- [源码分析] 从实例和源码入手看 Flink 之广播 Broadcast
[源码分析] 从实例和源码入手看 Flink 之广播 Broadcast 0x00 摘要 本文将通过源码分析和实例讲解,带领大家熟悉Flink的广播变量机制. 0x01 业务需求 1. 场景需求 对黑 ...
- drf的基本使用、APIView源码分析和CBV源码拓展
cbv源码拓展 扩展,如果我在Book视图类中重写dispatch方法 -可以实现,在get,post方法执行之前或者之后执行代码,完成类似装饰器的效果 def dispatch(self, requ ...
- Spring Ioc源码分析系列--Ioc源码入口分析
Spring Ioc源码分析系列--Ioc源码入口分析 本系列文章代码基于Spring Framework 5.2.x 前言 上一篇文章Spring Ioc源码分析系列--Ioc的基础知识准备介绍了I ...
- k8s client-go源码分析 informer源码分析(3)-Reflector源码分析
k8s client-go源码分析 informer源码分析(3)-Reflector源码分析 1.Reflector概述 Reflector从kube-apiserver中list&watc ...
- jQuery1.11源码分析(1)-----Sizzle源码概览[原创]
最近在啃jQuery1.11源码,上来就遇到Sizzle这个jQuery的大核心,虽然已经清楚了Sizzle的用途,先绕过去也没事,但明知山有虎偏向虎山行才是我们要做的. 本文面向的阅读对象:正在学习 ...
- MongoDB源码分析——mongod程序源码入口分析
Edit 说明:第一次写笔记,之前都是看别人写的,觉得很简单,开始写了之后才发现真的很难,不知道该怎么分析,这篇文章也参考了很多前辈对MongoDB源码的分析,也有一些自己的理解,后续将会继续分析其他 ...
- 【MyBatis源码分析】select源码分析及小结
示例代码 之前的文章说过,对于MyBatis来说insert.update.delete是一组的,因为对于MyBatis来说它们都是update:select是一组的,因为对于MyBatis来说它就是 ...
随机推荐
- Nginx:反向代理
与众不同的生活方式很累人呢,因为找不到借口 在上一章节中,我们以及了解到正向.反向代理.负载均衡和动静分离的基本概念,安装教程,而在本节中将会了解到在 本文要点: 1.理清概念 2.Linux ...
- 导入Jar报错An internal error occurred during: "Building workspace". zip END header not found
百度了好久都没有找到答案,后来新建了一个文件夹,再build path就正常了,不知道为什么
- 腾讯云服务器ubuntu18.04部署禅道系统
踩了不少坑,记录一下. 基于ubuntu18.04 一开始按照网上的攻略下载安装包 ZenTaoPMS.9.8.3.zbox_64.tar.gz,通过FileZilla传到linux的/opt下面,解 ...
- 2019-2020-1 20199305《Linux内核原理与分析》第九周作业
进程的切换和一般执行过程 (一)进程调度的时机 (1)关键问题 何为进程切换?就是进程调度时机到来时从就绪进程队列中能够挑选一个进程执行,占用CPU时间,那么就有两个关键问题:一是什么时间去挑选一个就 ...
- Java内存分析工具MAT
MAT是一个强大的内存分析工具,可以快捷.有效地帮助我们找到内存泄露,减少内存消耗分析工具.内存中堆的使用情况是应用性能监测的重点,而对于堆的快照,可以dump出来进一步分析,总的来说,一般我们对于堆 ...
- [译]Vulkan教程(14)图形管道基础之固定功能
[译]Vulkan教程(14)图形管道基础之固定功能 Fixed functions 固定功能 The older graphics APIs provided default state for m ...
- Ubuntu安装Node和npm
本文简单介绍在Ubuntu上安装最新版本的node和npm. 本次试验环境是Ubuntu 18.10. 安装nodejs root@ubuntu:~# cat /etc/issue Ubuntu 18 ...
- SpringBoot与数据层
1.JDBC <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
- 在ASP.NET中备份数据库以及还原(不成熟)
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- robot用例执行常用命令(转)
执行命令 执行一个用例 robot -t “testcase_name“ data_test.robot 按用例文件执行 robot data_test.robot或者 robot --suite “ ...