使用 wu pack 打包应用
从原生构建创建签名 .wuapp,并准备在其他宿主中安装。
需要 WU CLI 1.2.0,应用 API 需要 WU Framework 4.0.0。请检查 wu --version 和项目依赖。
wu build --native
wu pack --keygen keys/catalog.pem --json
wu pack catalog --sign keys/catalog.pem --version 1.2.0 --out catalog-1.2.0.wuapp --json
在工作区运行命令。catalog 是 dist/wu-manifest.json 中的名称,不一定是目录名。--keygen 输出宿主 trust 使用的公钥 JWK,私钥保存在 PEM 文件中。
| 参数 | 行为约定 |
|---|---|
<app> |
构建清单中的应用名称。 |
--dist <dir> |
构建目录,默认为 dist。 |
--out <file> |
输出文件,默认为 <name>-<version>.wuapp。 |
--version <version> |
包中的应用版本。 |
--sign <key.pem> |
使用 ECDSA P-256 私钥签名。 |
--keygen <key.pem> |
生成私钥并输出公钥,不执行打包。 |
--json |
以 JSON 输出结果或错误。 |
格式与模块解析
wuapp/1 格式为 gzip 压缩的 JSON,包含名称、版本、入口、清单以及具有类型、编码、内容和 SHA-256 的文件。内部 JavaScript 导入改为相对路径,并移除 ?v=<build>。/@modules/ 引用保留以使用宿主共享模块;不会自动包含宿主的所有依赖。
版本依次来自 --version、应用清单、应用 package.json,最终回退到 0.0.0。签名覆盖格式、身份、入口、清单和哈希的规范化表示。不使用 --sign 时生成无签名包,安装器需要显式授权才会接受。
结果与错误
JSON 输出包含 out、name、version、entry、files、bytes、signed 和 publicKey。缺少构建清单、未知应用、缺少入口或密钥无效时退出码为 1。--version 指打包应用的版本,不是 WU CLI 版本。验证签名和挂载内容见安装 .wuapp 文件。
在 1.2.0 中,--keygen 拒绝覆盖现有密钥;--force 允许显式替换。签名仅接受 ECDSA P-256。打包器按扩展名分配 MIME,并根据安装器规则验证路径、类型和限制。原生构建的哈希名称在包内保留身份。
实现参考
wu-cli/src/commands/pack.cjswu-cli/tests/pack-safety.test.cjswu-cli/tests/pack.test.cjs