Empacotar uma app com wu pack
Crie um .wuapp assinado a partir do build nativo e prepare a instalação em outro shell.
Requer WU CLI 1.2.0 e WU Framework 4.0.0 para as APIs das aplicações. Confira wu --version e as dependências do projeto.
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
Execute os comandos no workspace. catalog é o nome em dist/wu-manifest.json, não necessariamente o diretório. --keygen retorna a JWK pública usada pelo trust do host; a chave privada fica no PEM.
| Argumento | Contrato |
|---|---|
<app> |
Nome da app no manifest de build. |
--dist <dir> |
Diretório do build; padrão dist. |
--out <file> |
Arquivo de saída; padrão <name>-<version>.wuapp. |
--version <version> |
Versão da app dentro do pacote. |
--sign <key.pem> |
Assina com uma chave privada ECDSA P-256. |
--keygen <key.pem> |
Gera a chave privada e imprime a pública; não empacota. |
--json |
Emite resultado ou erro em JSON. |
Formato e resolução de módulos
O formato wuapp/1 é JSON comprimido com gzip. Contém nome, versão, entrada, manifest e arquivos com tipo, codificação, conteúdo e SHA-256. Imports JavaScript internos viram caminhos relativos e ?v=<build> é removido. Referências /@modules/ permanecem para módulos compartilhados do host; o pacote não inclui automaticamente todas as dependências do shell.
A versão vem de --version, do manifest da app, de seu package.json ou, por fim, de 0.0.0. A assinatura cobre a representação canônica de formato, identidade, entrada, manifest e hashes. Sem --sign, o pacote não é assinado; o instalador exige autorização explícita para aceitá-lo.
Resultado e erros
A saída JSON inclui out, name, version, entry, files, bytes, signed e publicKey. Manifest de build ausente, app desconhecida, entrada ausente ou chave inválida gera saída 1. --version indica a versão da app empacotada, não da WU CLI. Para verificar a assinatura e montar, siga Instalar arquivos .wuapp.
Na 1.2.0, --keygen recusa sobrescrever uma chave existente; --force permite essa substituição explícita. Assinaturas aceitam apenas ECDSA P-256. O empacotador atribui MIME por extensão e valida caminhos, tipos e limites segundo as regras do instalador. Nomes com hash do build nativo mantêm sua identidade dentro do pacote.
Referência de implementação
wu-cli/src/commands/pack.cjswu-cli/tests/pack-safety.test.cjswu-cli/tests/pack.test.cjs