本文將說明如何建立新外掛程式。雖然該程序是說明如何建立第一方外掛程式,但您也可以將其做為建立第三方外掛程式的指南。
如要瞭解外掛程式總覽,請參閱「外掛程式」。
如要快速瞭解如何建立外掛程式,請參閱我們的外掛程式建構方式講座 (2021 年)。
第一方與第三方
外掛程式的目標使用者是透過 npm 尋找及使用外掛程式的開發人員。
Blockly 團隊支援第一方外掛程式,並在 npm 的 @blockly
範圍內發布。這些積木可用於各種 Blockly 應用程式,而且穩定易用。這些檔案會儲存在 blockly-samples 中。許多機器人專案都會使用馬達速度設定欄位,因此很適合做為第一方外掛程式。
第三方外掛程式會獨立維護及發布。這些函式庫可能更複雜、更具實驗性質,或適用於範圍較窄的 Blockly 應用程式。編輯資料庫結構定義所定義特定物件的欄位,最好是使用第三方外掛程式。
第一方條件
第一方外掛程式必須符合下列規定:
- 適用於所有主要平台,除非 Blockly 團隊授予豁免權。
- Chrome、Firefox、Safari、Edge
- 有作者願意在第一年處理錯誤。
- 請勿對 Blockly 進行猴子修補。
- 有明確定義並記錄在案的 API。
- 除非 Blockly 團隊授予豁免權,否則請勿從 Blockly 核心呼叫私有或套件函式。
- 您可以在定義的子類別中覆寫套件函式。
- 如要申請豁免,請在 blockly-samples 的問題中提出要求。
- 提供測驗。
授權程序
建議
外掛程式會以建議的形式顯示,如要建議外掛程式,請使用「Feature Request」(功能要求) 範本建立新問題。詳情請參閱如何撰寫功能要求。
除了基本功能要求資訊外,外掛程式建議還應包含:
- 外掛程式會公開的 API。
- 需要在核心 Blockly 中新增或變更的 API,才能支援外掛程式。
- 如果外掛程式包含 UI 功能,請附上螢幕截圖、GIF 或模擬圖。
- 說明為何應使用第一方外掛程式,而非第三方外掛程式。
Blockly 團隊會審查收到的建議,然後關閉問題,或同意建議是合適的第一方外掛程式。
討論
接著,外掛程式會進入討論階段。這個階段包括:
- 說明所需功能。
- 釐清外掛程式的 API。
- 規劃實作作業。
- 規劃測試。
- 討論核心 Blockly 中的 API 變更。
- 將大型外掛程式細分為導入步驟。
- 外掛程式命名,須遵循命名慣例。
- 確認符合所有第一方條件。
這類討論通常會在 GitHub 問題中進行。外掛程式的範圍越小,討論階段就越快。較大的外掛程式可能會吸引社群的注意,並對正確解決方案提出強烈的意見。如果問題已解決,恭喜!你發現了大家關心的事物。
目標是在討論階段結束時,做出所有重大設計決策,並列出明確的實作步驟。兩者都應記錄在問題的註解中。
討論期間,我們可能會決定外掛程式應為第三方外掛程式,
而非發布在 @blockly
範圍內。在這種情況下,我們會說明原因並結案。
討論完成後,Blockly 團隊成員會註記該提案已準備好實作。
導入作業
導入步驟包括:
- 執行
npx @blockly/create-package
,從範本設定外掛程式及其目錄。瞭解詳情... - 實作外掛程式的核心邏輯。
- 視需要實作 UI。
- 使用 Mocha 測試外掛程式。
- 記錄外掛程式,包括
README
。
如果建議的外掛程式已獲准實作,且您想著手開發,請在問題中留言,詢問是否仍開放貢獻。
多位協作者可以並行實作。您可以在自己的分支中共同實作外掛程式,或透過對這個存放區的提取要求實作。如要在這個存放區中協作外掛程式,請要求 Blockly 團隊為您建立功能分支。
外掛程式應新增至 blockly-samples 的 master
分支中的 gh-pages/index.md
檔案。這樣一來,這些外掛程式就會顯示在我們的外掛程式網站上。第一方外掛程式應指向測試頁面。您也可以在這個頁面新增第三方外掛程式,並指向擁有者選擇的連結,例如代管的試用版或 npm 頁面。
發布中
最後是發布。Blockly 團隊使用 Lerna 管理所有外掛程式的版本和發布作業。
每週四,系統會發布自上次發布以來有變更的任何外掛程式。如需盡快發布變更,請在提取要求中註明。
外掛程式發布後,外掛程式網站也會更新。
如果外掛程式尚未準備好發布,應在 package.json
中標示 private
。如果外掛程式依附於核心 Blockly 中尚未發布的變更,就可能發生這種情況。核心 Blockly 會在每季的最後一週發布 (每三個月一次)。