
近期因为工作和自身的爱好等等机缘巧合.需要对vscode进行二次魔改。
所以一直在啃vscode源码.
vscode 整体架构非常复杂,但同时源码非常清晰明了,有第三方依赖,核心模块大都是由自身实现,包括依赖注入系统、UI管理、插件服务、terminal(powershell)管理.
vscode的模块架构非常清晰.主要包含
- extensions (插件模块.该目录下每个目录都是一个独立的插件. build/builtInExtensions.json 描述了额外依赖的远程插件
- vs-base (基础功能模块
- vs-code (这里还没了解是啥后续更新。代码很少
- vs-editor ( monaco-editor...
- vs-platform ( 这里可以理解为跟系统原生API交互的一些组件. 比如 fileDialog.. powershell. bash 啊这些..
- vs-workbench ( 这里相当于我们看到的vscode的整个界面.下一篇文章会讲到vscode会用electron打开一个渲染进程直接载入workbench.html ...二次开发主要也是改这里
每个模块基本还会细分为三个子模块分别运行在三个不同的进程.
- browser (UI逻辑
- common (共享的一些逻辑. config 之类的 如果在这里写了一些依赖node 库才能运行的代码 让 browser调用了。会导致vscode卡死..
- node (node逻辑代码
- el