新增外掛程式

本文件將說明如何建立新的外掛程式。雖然該文章說明的程序是用於建立第一方外掛程式,但您可以將其做為建立第三方外掛程式的指南。

如需外掛程式總覽,請參閱「外掛程式」。

如需建立外掛程式的快速介紹,請參閱「如何建構外掛程式 (2021 年)」一文。

第一方與第三方

外掛程式的目標使用者是透過 npm 找到並使用外掛程式的開發人員。

第一方外掛程式由 Blockly 團隊支援,並在 npm 上以 @blockly 範圍發布。這些程式碼可用於多種 Blockly 應用程式,且穩定且易於使用。這些檔案會儲存在 blockly-samples 中。設定馬達速度的欄位可用於許多機器人專案,是第一方外掛程式的理想候選項。

第三方外掛程式則由獨立維護及發布。這些應用程式可能較複雜、較實驗性,或鎖定較狹窄的 Blockly 應用程式。用於編輯資料庫結構定義的特定物件的欄位,較適合作為第三方外掛程式。

第一方條件

第一方外掛程式「必須」符合下列規定:

  • 適用於所有主要平台 (除非 Blockly 團隊授予豁免權)。
    • Chrome、Firefox、Safari、Edge
  • 請作者在第一年願意處理錯誤。
  • 請勿對 Blockly 進行猴子補丁。
  • 提供明確定義且記錄在案的 API。
  • 除非 Blockly 團隊同意,否則請勿從 Blockly 核心呼叫私人或套件函式。
    • 您可以針對所定義的子類別,覆寫套件函式。
    • 如需豁免,請在 Blockly-samples 中提出問題。
  • 進行測試。

授權程序

外掛程式會經歷四個階段:建議討論實作發布

建議

外掛程式一開始是建議。您可以使用「功能要求」範本建立新問題,提出外掛程式建議。

瞭解如何撰寫功能要求

除了基本功能要求資訊外,外掛程式建議應包含以下內容:

  • 外掛程式會揭露的 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 中尚未發布的變更,就可能發生這種情況。Core Blockly 會在每季最後一週發布 (每三個月一次)。