Empaquetar una app con wu pack
Crea un archivo .wuapp firmado desde un build nativo y prepara su instalación en otro shell.
Requiere WU CLI 1.2.0 y, para las APIs de las aplicaciones, WU Framework 4.0.0. Comprueba wu --version y las dependencias del proyecto.
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
Ejecuta los comandos desde el workspace. catalog es el nombre en dist/wu-manifest.json, no necesariamente el nombre de carpeta. La salida de --keygen incluye la JWK pública que el host usará en trust; la clave privada permanece en el archivo PEM.
| Argumento | Contrato |
|---|---|
<app> |
Nombre de una app del manifiesto de build. |
--dist <dir> |
Directorio de build; defecto dist. |
--out <file> |
Archivo de salida; defecto <name>-<version>.wuapp. |
--version <version> |
Versión de la app dentro del paquete. |
--sign <key.pem> |
Firma con una clave privada ECDSA P-256. |
--keygen <key.pem> |
Genera una clave privada e imprime la pública; no empaqueta. |
--json |
Emite el resultado o error como JSON. |
Formato y resolución de módulos
El formato wuapp/1 es JSON comprimido con gzip. Incluye nombre, versión, entrada, manifest y archivos con tipo, codificación, contenido y SHA-256. Los imports JavaScript internos se convierten en rutas relativas y se retira ?v=<build>. Las referencias /@modules/ permanecen para usar módulos compartidos del host; el paquete no incluye automáticamente todas las dependencias del shell.
La versión se toma de --version, del manifest de la app, de su package.json o finalmente de 0.0.0. La firma cubre la representación canónica de formato, identidad, entrada, manifest y hashes. Sin --sign, el resultado es un paquete sin firma; el instalador exige autorización explícita para aceptarlo.
Resultado y errores
La salida JSON incluye out, name, version, entry, files, bytes, signed y publicKey. Un manifiesto de build ausente, app desconocida, entrada inexistente o clave inválida produce salida 1. La versión indicada por --version pertenece a la app empaquetada, no a WU CLI. Para verificar la firma y montar el contenido, sigue Instalar archivos .wuapp.
En 1.2.0, --keygen rechaza sobrescribir una clave existente; --force permite ese reemplazo explícito. Las firmas solo aceptan ECDSA P-256. El empaquetador asigna MIME por extensión y valida paths, tipos y límites según las reglas del instalador. Los nombres con hash del build nativo conservan su identidad dentro del paquete.
Referencia de implementación
wu-cli/src/commands/pack.cjswu-cli/tests/pack-safety.test.cjswu-cli/tests/pack.test.cjs