你會在本地搭建 Web 版 VS Code 嗎,看完這一篇你就能輕鬆實現了!

  • 2020 年 2 月 21 日
  • 筆記

Visual Studio Code 是微軟推出的一款輕量級編輯器,與它一起在市場爭鋒的相似軟件還有 AtomSublime Text,面世第二年的它只佔據 7% 左右的市場,後來在短短三年時間雄踞了半壁江山,不可謂不哇塞。

近日,微軟在 Ignite 2019 大會上,正式發佈了 「Visual Studio Online」。其中包含了微軟託管的 WebVSCode,如今又發佈了 VSCode 1.40 ,該版本已經支持開發者直接從 VSCode 的源代碼編譯出 WebVSCode,本文就將給大家介紹下如何用源代碼自行構建 VSCode 和在本地運行 Web 版的 VSCode 的方法。

下載 VS Code 源碼

Visual Studio Code 簡稱 VSCode。需要注意的是,平時我們使用的 VSCode 是產品,而下面我們要介紹的是源碼,產品是源碼的構建結果。源碼使用的 MIT License,而產品使用的是 MICROSOFT SOFTWARE LICENSE TERMS。如果你想把 VSCode 用於商用,建議從源碼構建出新的產品,而不是直接使用官網上提供下載鏈接的 VSCode Product

  1. 官網地址:https://code.visualstudio.com/
  2. 源碼地址:https://github.com/microsoft/vscode

我們先把源碼下載下來。

$ git clone --depth 1 https://github.com/microsoft/vscode.git

由於 VSCode 項目過於活躍,提交量非常龐大,到目前為止,已經有 56,092 次提交了,建議在下載源碼的時候加上一句 --depth 1,意思就是只下載最近一次 commit 的代碼。

安裝相關依賴

在安裝依賴之前,我們不妨稍微分析下 VSCode 的項目結構,

➜  vscode (master) tree -L 1  .  ├── CONTRIBUTING.md  ├── LICENSE.txt  ├── README.md  ├── ThirdPartyNotices.txt  ├── azure-pipelines.yml  ├── build/  ├── cglicenses.json  ├── cgmanifest.json  ├── extensions/  ├── gulpfile.js  ├── package.json  ├── product.json  ├── remote/  ├── resources/  ├── scripts/  ├── src/  ├── test/  ├── tsfmt.json  ├── tslint.json  └── yarn.lock

未來我們需要重點關注的是 src/extensions/ 兩個目錄,前者放的是 VSCode 的核心源碼,後者放的是 VSCode 的內置插件。

眼神再晃動一下,應該還會看到幾個熟悉的關鍵詞:build/gulpfile.jspackage.jsontslint.jsonyarn.lock。由此,我們基本可以斷定:這個倉庫是一個用 TypeScript 開發、用 yarn 管理依賴、用 gulp 進行打包的 Node.js 項目,事實上它也是一個 Electron 項目。

好了,目錄就介紹到這裡了,接着開始進行漫長的依賴安裝。

➜  vscode (master) yarn

執行 yarn 後,VSCode 會幹三件事情:

  • preinstall 腳本對 yarn 的版本做判斷
    • 要求必須 >=1.10.1
    • 並且只允許使用 yarn 來安裝依賴,npm 安裝會提示錯誤
  • 安裝 package.json 中描述的各個依賴
    • 很多依賴都需要重新編譯,而編譯過程經常會失敗
    • 失敗了怎麼辦?看錯誤提示,如果流程沒中斷,就讓它一直跑下去
    • 一直卡着,好像不跑了怎麼辦?ctrl-c 終止進程後重新執行 yarn
  • postinstall 會逐個安裝 build/remote/test/extensions 等目錄中的依賴
    • extension 的安裝比較特殊,安裝的過程中又會執行 updateGrammar 腳本
    • 整個安裝過程十分的慢,可以考慮泡杯咖啡打開電視劇……

執行完 yarn 後,整個安裝並沒有結束。剩下幾步 VSCode 會在你執行 gulp 相關腳本的時候做檢測。倘若資源不存在便會安裝,由於很多資源都在牆外,我們還是分解下動作,分步手動下載:

  1. 把 Electron 安裝起來
➜  vscode (master) yarn electron

如果下載太慢,建議在命令行打開下代理。

➜  vscode (master) proxychains4 yarn electron
  1. 把內置的幾個依賴插件安裝起來
➜  vscode (master) yarn download-builtin-extensions

如果你的網絡不給力,整個過程或許會耗時很久。我這裡歷時差不多一個小時,終於把依賴下載完成了,這是我安裝依賴花的時間最長的一次。

構建程序

構建客戶端版本

由於啟動一次構建花費的時間太長,1~5min 不等(看機器性能和人品),所以我建議你使用 yarn watch 來構建,它會完成一次構建並監聽文件的變化,後續不用重新構建。

構建完成以後,你就可以執行以下命令打開 VSCode 的客戶端界面了。

➜  vscode (master) ./scripts/code.sh

命令成功執行後,就可以看到以下的界面了。

如果你是 Windows 系統,執行的腳本應該是 ./script/code.bat

構建 Web 版本

VSCode 1.40 及以上版本現在已經自帶支持 Web 版本了,在這之前也有一個基於 VSCodeWeb 版,叫 Code-Server。如果你感興趣可以在「推薦一款支持在瀏覽器上運行 VS Code 的服務端神器 Code-Server」一文中進行了解!

構建 Web 版本的方法非常簡單,只需運行下面的命令即可。

# gulp watch 完成後執行  ➜  vscode (master) yarn web

構建完成後,會自動在瀏覽器窗口中打開地址為 http://localhost:8080/Web 版本 VSCode

小結

本文主要通過傻瓜式地教學,給大家演示了下,如何將源碼變成我們熟悉的 VSCode 客戶端,同學們在動手的過程中可能還會遇到各種依賴安裝問題。不要灰心,實在不行就 rm -rf node_modules,然後重試。相信你一定會成功的,加油!

本文轉載自:「小鬍子哥的個人網站」,原文:https://url.cn/5NFuJf8,版權歸原作者所有。歡迎投稿,投稿郵箱: [email protected]