《開源精選》是我們分享Github、Gitee等開源社區(qū)中優(yōu)質(zhì)項(xiàng)目的欄目,包括技術(shù)、學(xué)習(xí)、實(shí)用與各種有趣的內(nèi)容。本期推薦的是一個(gè)基于遠(yuǎn)程工作區(qū)的集成開發(fā)環(huán)境(IDE)——SmartIDE。
SmartIDE可以幫助你完成開發(fā)環(huán)境的一鍵搭建,如果你熟悉命令行操作,那么么安裝我們的cli,然后你只需要學(xué)會一個(gè)命令 smartide start 就可以在自己所需要的環(huán)境中,使用自己喜歡的開發(fā)工具進(jìn)行編碼和開發(fā)調(diào)試了,不再需要安裝任何工具,SDK,調(diào)試器,編譯器,環(huán)境變量等繁瑣的操作。如果不喜歡命令行操作,也可以使用 SmartIDE Server 通過網(wǎng)頁完成全部操作。如果我們把Vscode和JetBrain這些IDE稱為傳統(tǒng)IDE的話,這些傳統(tǒng)IDE最大的問題是:他們雖然在 I (Integration) 和 D (Development) 上面都做得非常不錯(cuò),但是都沒有解決 E (Environment) 的問題。
當(dāng)前SmartIDE包括4個(gè)組件
- CLI:一個(gè)簡單易用的命令行工具,可以運(yùn)行在Windows/MacOS/Linux上,開發(fā)者使用一個(gè)簡單的指令 smartide start 即可一鍵搭建開發(fā)環(huán)境,直接打開環(huán)境內(nèi)置的WebIDE開始進(jìn)行編碼和調(diào)試。
- Server:支持私有部署的開源容器化開發(fā)環(huán)境管理服務(wù)。Server版繼承CLI的所有能力,但是提供網(wǎng)頁化的操作,同時(shí)針對團(tuán)隊(duì)使用進(jìn)行擴(kuò)展和支持。
- Marketplace:SmartIDE插件市場是 open-vsx.org 的一個(gè)fork,我們進(jìn)行了漢化并提供中國本地部署和插件自動(dòng)同步服務(wù)。企業(yè)也可以選擇在內(nèi)網(wǎng)部署 SmartIDE插件市場,為內(nèi)部開發(fā)者提供安全可控的VSCode插件管理服務(wù)。
- 開發(fā)者鏡像和模板:開發(fā)者鏡像是一系列預(yù)先構(gòu)建好的開發(fā)環(huán)境容器,我們提供7種開發(fā)語言的開發(fā)者鏡像,并且同時(shí)托管在國內(nèi)的阿里云和DockerHub,方便全球的開發(fā)者使用。
功能示例
遠(yuǎn)程開發(fā)、本地體驗(yàn)
使用SmartIDE,你可以將運(yùn)行在任何地方(AWS,Azure,阿里云,騰訊云,甚至你家里的筆記本上)的主機(jī)作為你本地開發(fā)環(huán)境的擴(kuò)展,利用這些云端資源的同時(shí),仍然保持本地開發(fā)體驗(yàn)。
比如下圖所示的IDE環(huán)境:我正在使用一臺運(yùn)行在微軟Azure云數(shù)據(jù)中心的主機(jī)作為SmartIDE的開發(fā)環(huán)境,而所有的訪問地址全部都是 localhost。
圖中所展示的是我正在使用SmartIDE維護(hù)本網(wǎng)站的現(xiàn)場截圖,圖中所標(biāo)注的幾個(gè)關(guān)鍵點(diǎn)解釋如下:
1、在遠(yuǎn)程主機(jī)的開發(fā)環(huán)境中啟動(dòng)了 hugo server 并且運(yùn)行在 1313 端口上
2、SmartIDE 本地駐守程序自動(dòng)完成遠(yuǎn)程主機(jī)上的1313端口到本地1313端口的轉(zhuǎn)發(fā)動(dòng)作,同時(shí)轉(zhuǎn)發(fā)的還有WebIDE所使用的3000端口,被轉(zhuǎn)發(fā)到了本地的6800端口
3、通過 http://localhost:6800 可以直接訪問遠(yuǎn)程主機(jī)上的 WebIDE
4、通過 http://localhost:1313 可以直接訪問遠(yuǎn)程主機(jī)上的 hugo server
說明:
Hugo 是一個(gè)用Go語言實(shí)現(xiàn)的靜態(tài)站點(diǎn)生成器,你當(dāng)前所瀏覽的 smartide.dev 站點(diǎn)所使用的就是hugo。我在使用hugo進(jìn)行 smartide.dev 開發(fā)的過程中遇到了一個(gè)很麻煩的問題:因?yàn)閔ugo通過git submodule的方式引入了大量GitHub代碼庫,在我本地環(huán)境中獲取這些資源非常的緩慢。通過SmartIDE的遠(yuǎn)程主機(jī)模式,我可以使用一臺云中的主機(jī),這樣我的git submodule獲取時(shí)間可以從20-30分鐘(本地模式)減少到2分鐘(遠(yuǎn)程主機(jī)模式)
IDE即代碼 (IDE as Code)
開發(fā)人員最頭疼的事情莫過于閱讀其他人寫的代碼了,更不要說把其他人寫好的代碼運(yùn)行起來了,各種環(huán)境搭建,工具配置,腳本參數(shù)足夠你折騰幾天的。SmartIDE通過一個(gè)放置于代碼庫中的 .ide.yaml 文件解決這個(gè)問題,以下是一個(gè)典型的 .ide.yaml 文件示例。
通過這個(gè)文件,我們將開發(fā)者需要啟動(dòng)當(dāng)前代碼庫所需要的環(huán)境,工具,腳本全部完整描述出來,SmartIDE就是通過解析這個(gè)文件完成自動(dòng)化的開發(fā)環(huán)境創(chuàng)建和復(fù)制的。
有了這個(gè).ide.yaml文件,開發(fā)者再也不用考慮如何啟動(dòng)開發(fā)環(huán)境的事情了,你所需要掌握的只有一個(gè)命令 smartide start 就夠了。
version: smartide/v0.2orchestrator: type: docker-compose version: 3workspace: dev-container: service-name: boathouse-calculator webide-port: 6800 ports: webide: 6800 ssh: 6822 application: 3001 ide-type: vscode volumes: git-config: true ssh-key: true command: – npm install – npm start docker-compose-file: docker-compose.yaml
示例程序
Boathouse計(jì)算器應(yīng)用是為社區(qū)提供的一個(gè)全功能的node.js示例程序,你可以通過以下方式迅速啟動(dòng)這個(gè)應(yīng)用進(jìn)行體驗(yàn)。
## 完整指令smartide start https://gitee.com/idcf-boat-house/boathouse-calculator.git## 簡化版指令se up https://gitee.com/idcf-boat-house/boathouse-calculator.git
然后就可以進(jìn)行開發(fā)和調(diào)試,是不是很爽?
圖中重點(diǎn):
- 通過右下角的的終端,你可以看到僅用一個(gè)簡單的命令(smartide start)就完成了開發(fā)環(huán)境的搭建
- 在右上角的瀏覽器中運(yùn)行著一個(gè)大家熟悉的Visual Studio Code,并且已經(jīng)進(jìn)入了單步調(diào)試狀態(tài),可以通過鼠標(biāo)懸停在變量上就獲取變量當(dāng)前的賦值,vscode左側(cè)的調(diào)用堆棧,變量監(jiān)視器等的都在實(shí)時(shí)跟蹤應(yīng)用運(yùn)行狀態(tài)
- 左側(cè)的瀏覽器中是我們正在調(diào)試的程序,這是一個(gè)用node.js編寫的計(jì)算器應(yīng)用并處于調(diào)試終端狀態(tài)
- 以上全部的操作都通過瀏覽器的方式運(yùn)行,無需提前安裝任何開發(fā)環(huán)境,SDK或者IDE。你所需要的只有代碼庫和SmartIDE。
- 以上環(huán)境可以運(yùn)行在你本地電腦或者云端服務(wù)器,但開發(fā)者全部都可以通過localhost訪問,無需在服務(wù)器上另外開啟任何端口。
—END—
開源協(xié)議:GPL3.0
安裝文檔:https://smartide.cn/zh/docs/install
開源地址:https://gitee.com/smartide/SmartIDE