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都和你下载的发行版是不一样的)
如果要调试主进程的话,可以看下图,直接在主进程的代码里下断点即可
最新文章
- ZOJ Problem Set - 1392 The Hardest Problem Ever
- win7 64 安装mysql-python:_mysql.c(42) : fatal error C1083: Cannot open include file: 'config-win.h': No such file or directory
- 通过php获取用户微信openid
- Android版-支付宝APP支付
- JSP 处理汉字信息
- 我的VS2013中,用Ado.net给SQLParameter赋值的时候,当赋值null的时候,生成的sql语句是default
- selenium 调用JS操作滚动条(java)来解决element not clickable的问题
- [置顶] 请听一个故事------>;你真的认为iPhone只是一部手机?苹果惊天秘密!!
- zepto.js 源码注释备份
- .NET架构师
- Vim进阶命令
- 【matlab编程】Matlab版扫雷
- springboot v2.0.3版本多数据源配置
- python入门 -- 环境搭建(windows)
- nio编程
- elementUI 设置input的只读或禁用
- poj 3694 Network 【Tarjan】+【LCA】
- Python3自动化运维之Fabric模版详解
- P3806 【模板】点分治1(CDQ分治)
- ComponentOne使用技巧——从Winform穿越到WPF
热门文章
- html5的 history模式和hash模式
- SQL Server如何正确的删除Windows认证用户
- Shell批量SSH免交互登录认证
- Linux防火墙常用命令
- R学习
- 【Springboot】spring-boot-starter-redis包报错 :unknown
- Failed to execute ‘createObjectURL’ on ‘URL’: No function was found that matched the signature provided.
- zabbix snmp监控与主被模式
- jquery实现get的异步请求
- 应用DEV第三方界面控件制作批量添加水印程序