blocklet bundle 命令是开发生命周期中的关键一步。它将你的 blocklet 的源代码、资产和元数据打包到一个标准的 .blocklet 目录中,使其可供部署或分发。
此过程会智能地收集 blocklet.yml 中指定的所有必要文件,包括生命周期脚本,并准备一个干净、优化的包。
基本用法
要打包你的 blocklet,只需导航到项目的根目录并运行以下命令:
Terminal
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` 强制启用此模式。
命令选项
你可以使用以下选项自定义打包过程:
| Option | Description |
|---|---|
--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> | 指定用于处理外部依赖项的包管理器(例如 npm、yarn)。默认为 npm。 |
--dependencies-depth <number> | (仅限紧凑模式)设置在解析外部模块时扫描依赖项的深度。默认为 9。 |
高级主题
处理外部依赖
在 compact 模式下,打包器会尝试包含所有必要的依赖项。但是,某些包(如 @blocklet/sdk 或 express)是由 Blocklet Server 运行时提供的。为防止它们被包含在你的包中并减小其大小,请使用 --external 标志。
Terminal
# 排除单个依赖项
blocklet bundle --compact --external react
# 再次使用该标志以排除多个依赖项
blocklet bundle --compact --external react --external react-dom
# 使用逗号分隔的列表排除多个依赖项
blocklet bundle --compact --external react,react-dom包含附加文件
打包器会根据你的配置自动包含主源代码之外的文件:
blocklet.yml中的files:blocklet.yml的files数组中列出的任何文件或 glob 模式都将被包含。- 生命周期脚本:在你的
scripts钩子(例如pre-start、post-stop)中引用的 JavaScript 文件会被自动检测并打包。 - 迁移脚本:
migration/目录下的所有脚本(例如migration/*.js)都将被包含,以支持数据库迁移。
成功打包你的 blocklet 后,下一步是进行版本控制并准备分发。请继续阅读下一部分以了解更多信息。