為什麼要做 Rubick
其實做 Rubick 1.x
的初衷就是解決自己的問題的:特別需要一款支援自定義外掛的桌面端應用來簡化使用者安裝龐大桌面端應用的臃腫。而且涉及到資料安全的問題,外掛只能在公司內網貢獻,無法對外公開。
在 Rubick 2.0
的階段,重新設計了一套基於 npm
的外掛管理體系,讓開發者更加便利的加入外掛的開發。擴充了外掛的邊界和種類,開發者可以開發 Rubick
系統外掛,此時的 Rubick
就成了一個 electron
高階封裝,開發者可以高自由的實現系統能力而不侷限餘 openAPI
也不侷限於必須搜尋呼起使用,只要 Rubick
在執行,外掛就在執行。
Rubick 的自我介紹
Rubick
是基於 electron
的開源工具箱,基於 npm
外掛管理的方式自由整合豐富外掛。Rubick(拉比克)
出處是 dota
裡面的英雄之一,其核心技能是外掛化使用其他英雄的技能,用完即走。非常符合本工具的設計理念,所以取名 Rubick
。
核心技能展示
1. 基於 npm 的方式管理外掛
剛開始設計外掛管理的方式是將外掛打包成 .zip
的壓縮包,然後再將壓縮包上傳到 CDN
上,點選安裝再 download
下來進行解壓。但是這樣有幾個弊端
- 需要一個資料儲存伺服器,來儲存這些壓縮包檔案,那麼這需要一筆費用,這對於一個開源開發者來說很難維持下去。
- 打包機制和解壓機制繁瑣,對開發者不友好
直到我看到 PicGo 作者關於 PicGo 外掛設計思路的文章,我突然覺得基於 npm
的包管理方式不正是我想要的嗎,既輕量有省了一筆伺服器儲存開銷: PicGo 外掛設計 但這其實也有另一個問題,因為是基於 npm
的管理模式,所以需要開發者提前安裝 node
環境,才可以使用 npm
。但這在目前是可以接受的,因為 Rubick
的目前定位也是為開發者服務的開源工具箱。
當你點安裝外掛的時候,其實執行的就是 npm install xxx
.
2. 系統外掛能力
Rubick
另一個最大的能力就是支援系統外掛,有了系統外掛,我們就可以不用受限於必須搜尋使用外掛了,只要 rubick
在執行,外掛就在執行。這對於一些特殊的場景來說是非常有價值的事情,比如我要實現一個定時提醒喝水的外掛,如果我退出了外掛介面,可能就無法實現。但是要做成了系統外掛,即使退出了外掛,但rubick
依舊會在後臺執行外掛提供的hooks
。這個靈感也是來自於 PicGo
的外掛生命週期設計。下面來演示系統外掛:
有了系統外掛,我們就可以實現 螢幕取色外掛
、定時提醒外掛
、超級皮膚外掛
... 另外,由於 rubick
的系統外掛是執行在 main
程式的,所以,我們可以通過系統外掛做到更多的能力,比如把 rubick
就看出是 electron
的二次封裝,不需要任何 electron
的構建打包,基於系統外掛,我們可以實現另一個桌面端應用!
最後
做開源最大的動力是因為熱愛,完全是非盈利的,希望做的東西能給需要的小夥伴提供一些幫助和方向,程式設計師都是最單純可愛的,希望不要惡意攻擊打破程開源動力最後一份熱衷。
另附: