跳到主要内容

打包 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 发布压缩包。
--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 后,下一步是进行版本控制并准备分发。请继续阅读下一部分以了解更多信息。