跳到主要內容

封裝 Blocklet

blocklet bundle 指令是開發生命週期中的關鍵步驟。它會將您的 blocklet 的原始碼、資產和元數據打包到一個標準化的 .blocklet 目錄中,使其準備好進行部署或分發。

此過程會智慧地收集 blocklet.yml 中指定的所有必要檔案,包含生命週期腳本,並準備一個乾淨、優化的套件。

基本用法

要封裝您的 blocklet,只需導覽至專案的根目錄並執行以下指令:

Terminal

bash
blocklet bundle

此指令將在您的專案目錄中建立一個 .blocklet 資料夾,其中包含已封裝的應用程式。

封裝流程概覽

封裝過程涉及幾個關鍵步驟,以確保建立一個完整且有效的套件。

Bundle Blocklet

封裝模式

CLI 會根據您的 blocklet 設定(例如 group: 'static')自動選擇最佳的封裝模式。您也可以透過明確設定模式來覆寫此行為。

簡單模式

大多數 Node.js blocklet(例如 `group: 'dapp'` 或 `'gateway'`)的預設模式。它會將必要的檔案複製到 `.blocklet` 目錄中,而不會進行重大轉換。使用 `--simple` 來強制使用此模式。

Zip 模式

靜態 blocklet(`group: 'static'`)的預設模式。它會將主要應用程式碼封裝到 `.blocklet` 目錄內的 `blocklet.zip` 存檔中。這對於分發前端資產非常有效率。使用 `--zip` 來強制使用此模式。

緊湊模式

一種進階模式,可將 blocklet 及其相依套件封裝到最小檔案集合中。此模式透過建立更自給自足的建置版本,非常適合優化效能和套件大小。使用 `--compact` 來強制使用此模式。

指令選項

您可以使用以下選項自訂封裝過程:

OptionDescription
--zip強制封裝器使用 zip 模式。
--simple強制封裝器使用 simple 模式。
--compact強制封裝器使用 compact 模式以進行最小化建置。
--create-release封裝後,從 .blocklet 目錄建立一個可分發的 .tgz 發行版 tarball。
--create-archive--create-release 一起使用時,它也會產生一個封裝的 .zip 存檔。
--changelog <boolean>切換是否在封裝中包含變更日誌資訊。預設為 true
--monorepo指定 blocklet 是 monorepo 的一部分,並相應地調整檔案解析。
--source-map(僅限緊湊模式) 為封裝後的程式碼產生 source map。
--nosources-source-map(僅限緊湊模式) 產生 source map,但不嵌入原始碼。
--minify <boolean>(僅限緊湊模式) 切換是否對輸出程式碼進行壓縮。預設為 true
--external <dependency>從封裝中排除指定的相依套件。該相依套件預期由執行時環境提供。可多次使用。
--external-manager <manager>指定用於處理外部相依套件的套件管理器(例如 npmyarn)。預設為 npm
--dependencies-depth <number>(僅限緊湊模式) 設定在解析外部模組時掃描相依套件的深度。預設為 9

進階主題

處理外部相依套件

compact 模式下,封裝器會嘗試包含所有必要的相依套件。然而,某些套件(如 @blocklet/sdkexpress)是由 Blocklet Server 執行時提供的。為防止它們被包含在您的封裝中並減小其大小,請使用 --external 旗標。

Terminal

bash
# 排除單一相依套件
blocklet bundle --compact --external react

# 再次使用旗標以排除多個相依套件
blocklet bundle --compact --external react --external react-dom

# 使用逗號分隔的列表排除多個相依套件
blocklet bundle --compact --external react,react-dom

包含額外檔案

封裝器會根據您的設定自動包含主要原始碼以外的檔案:

  • blocklet.yml 中的 filesblocklet.ymlfiles 陣列中列出的任何檔案或 glob 模式都將被包含。
  • 生命週期腳本:在您的 scripts 掛鉤(例如 pre-startpost-stop)中引用的 JavaScript 檔案會被自動偵測並封裝。
  • 遷移腳本migration/ 目錄中的所有腳本(例如 migration/*.js)都將被包含以支援資料庫遷移。

成功封裝您的 blocklet 後,下一步是為其設定版本並準備分發。請繼續閱讀下一節以了解更多資訊。