近期因爲工作和自身的愛好等等機緣巧合.需要對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 ( 工作區模塊.二次開發主要也是改這裏
每個模塊基本還會細分爲三個子模塊分別運行在三個不同的進程.
- browser (UI邏輯
- common (共享的一些邏輯. config 之類的 如果在這裏寫了一些依賴node 庫才能運行的代碼 讓 browser調用了。會導致vscode卡死..
- node (node邏輯代碼
不同的進程間如圖採用ipc通訊