在Windows平台上从源码编译vscode
操作前须知
- 如果你只是不想被微软遥测,想用纯净的vscode,那么你可以直接下载vscodium,不必折腾
- 如果编译出现问题,请先看官方文档里有没有写
- 我使用的是Windows Terminal中的普通命令行,因为powershell运行yarn好像有问题,所以我没有用
- 编译过程中内存占用可能高达12GB,我看输出,有可能可以手动设置(--max-old-space-size),但我没有尝试,如果你的内存不够,请做好准备
- 编译的缓存文件比较多,最好用固态硬盘,可以快不少
参考:
官方文档
https://www.bilibili.com/video/BV1At4y1r7uQ/
https://www.youtube.com/watch?v=ISZja8tKR9Q
https://blog.csdn.net/xiaoxiezZ/article/details/103062971
https://www.jianshu.com/p/318629e3197f
0.准备工具
注意:各工具的版本要求写在官方文档里,应该是在不断更新的,注意检查版本
1.下载源码
2.编译
- 进入源码文件夹,打开命令行
- 运行
yarn这一步时间较长,我用了几十分钟,而且会下载大量文件,连接不上的可以试试魔法 - 运行
yarn run gulp vscode-win32-x64-min这一步时间很长,我这里大概是这样,CPU的一个核心占满,内存占用不断上升,16g内存大概用了12g,硬盘一直在读写。然后突然停在Starting compilation...上,CPU单核仍然占满,但是硬盘不动了。其实这是正常的,真的要等半小时
3.完成
- 源码目录的上一级会出现一个
VSCode-win32-x64文件夹,里面的Code - OSS.exe就是vscode程序
4.各种问题
- 提示
Invalid C/C++ Compiler Toolchain.:这是找不到你的c++编译器了,编译vscode好像必须用msvc,最简单的方法是按照官方文档安装独立编译器。编译vscode时它只会检查C:\Program Files\Microsoft Visual Studio下面有没有编译器,所以你如果把visual studio安装在了别的目录也没用。在<源码目录>\build\npm\preinstall.js的44和59行可以看到检查编译器位置的规则,如果你的visual studio在其他目录,可以根据这个规则mklink进行链接来解决C:\Program Files\Microsoft Visual Studio\2022\Community对应的是按照visual studio时的IDE目录 - 出现MSB8040:参考官方文档,在visual studio里面安装3个单个组件
- 提示
Not a git repository:可能是因为你没有clone仓库,没有.git文件夹,我直接把<源码目录>\build\npm\postinstall.js的最后两行注释掉了 - 提示
There is no Windows 10 SDK installed at:这是找不到你的Windows Kits,它好像只会查找默认安装位置的,可以直接修改报错的文件里的查找路径,也可以用mklink链接你的kits - 提示
Error: Request https://api.github.com/repos/microsoft/vscode-js-debug-companion/releases/tags/v1.1.2 failed with status code: 403 (you may be rate limited):这是纯网络问题,github访问不稳定,上午到下午成功率比较高,或者用魔法也行 - 出现
yarn install failed :vscode-ripgrep: Command failed.:删除C:\Users\<用户名>\AppData\Local\Temp\vscode-ripgrep-cache-1.2.4
5.关于编译后的打包和运行
- 如果你只需要测试vscode,可以在运行
yarn之后,在源码目录下运行yarn watch,然后会停在一个地方一直不动(我忘了记录了),不要关闭命令行,在源码目录下再开一个命令行,运行.\scripts\code.bat,就可以启动vscode了 - 前面运行
yarn run gulp vscode-win32-x64-min其实是打包,主要是从简书那篇文章里面学的,看那个就懂了 - 打包后运行
Code - OSS.exe提示Cannot find module 'minimist':我也不清楚怎么回事,重新下载源码再编译一次就好了
浙公网安备 33010602011771号