近期由於工做和自身的愛好等等機緣巧合.須要對vscode進行二次魔改。
因此一直在啃vscode源碼.html
vscode 總體架構很是複雜,但同時源碼很是清晰明瞭,有第三方依賴,核心模塊大都是由自身實現,包括依賴注入系統、UI管理、插件服務、terminal(powershell)管理.node
vscode的模塊架構很是清晰.主要包含shell
- 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 ...二次開發主要也是改這裏
每一個模塊基本還會細分爲三個子模塊分別運行在三個不一樣的進程.json
- browser (UI邏輯
- common (共享的一些邏輯. config 之類的 若是在這裏寫了一些依賴node 庫才能運行的代碼 讓 browser調用了。會致使vscode卡死..
- node (node邏輯代碼
- electron-main (運行在electron主進程的代碼
不一樣的進程間如圖採用ipc通信
bash