Instalar, atualizar e remover bundles — pacotes declarativos que juntam dependências npm, páginas, metadata do Studio e templates num projeto iGRP.
Um bundle é um pacote declarativo que se aplica a um projeto aberto: dependências npm, ficheiros copiados (páginas, layouts), metadata do Studio (.igrpstudio/…), skills e migrações. O mesmo catálogo aparece no separador Bundles do projeto no Studio IDE; o comando igrp bundle (alias b) faz o mesmo no terminal ou em CI.
Exemplos do catálogo atual:
| Bundle | Tipo | O que faz |
|---|---|---|
process-management-ui | platform-ui | Páginas de runtime dos processos BPMN e pacotes @igrp/platform-process-management-* — ver Formulários BPMN |
form-crud-template | form-template | Formulário CRUD (id, nome, descrição, ativo) num módulo, parametrizado por nome, rótulo e recurso |
template-migrator | migration-pack | Aplica as migrações pendentes do template Next.js |
Versão
igrp bundle existe na @igrp/cli 1.7.6 e a partir da 1.7.8 (a 1.7.7 não o inclui). Atualiza com npm i -g @igrp/cli@latest --registry=https://sonatype.nosi.cv/repository/npm-group/.
Subcomandos
igrp bundle search [query] [--framework <fw>] [--kind <k>] [--json] [--force]
igrp bundle info <bundle> [--json]
igrp bundle add <bundle> [--project <path>] [--version <semver>] [-p key=valor …] [--dry-run] [--force] [--skip-existing]
igrp bundle list [--project <path>] [--json]
igrp bundle upgrade <bundle> [--project <path>] [--to <semver>] [-p key=valor …] [--dry-run]
igrp bundle remove <bundle> [--project <path>] --yes
igrp bundle doctor [--project <path>] [--json]
igrp bundle adopt <bundle> [--project <path>] [--version <semver>] [--force]<bundle> é um nome do catálogo (nome ou nome@versão) ou um caminho local para a pasta de um bundle (também --from <path>).
| Flag | Onde | Efeito |
|---|---|---|
--project <path> | add, list, upgrade, remove, doctor, adopt | Raiz do projeto. Default: diretório atual. |
-p, --param <key=valor> | add, upgrade | Parâmetro do bundle (repetível). No upgrade, os guardados na instalação são o default. |
--dry-run | add, upgrade, remove | Mostra o plano ([planned] …) sem escrever. |
--force | add | Sobrepõe uma instalação existente. |
--skip-existing | add | Salta ficheiros cujo destino já existe (completa instalações parciais). |
--yes | remove | Confirma; sem ela o remove só mostra o plano. |
--to <semver> | upgrade | Versão alvo; default a mais recente. |
--framework <fw> · --kind <k> | search | Filtros (nextjs, spring, dotnet, agnostic; platform-ui, form-template, …). |
--source <url> | add, search, upgrade, adopt | Catálogo. Default: env IGRP_BUNDLE_REGISTRY, senão https://sonatype.nosi.cv/repository/igrp-templates/@igrp/bundles/. |
--json · --quiet | vários | Saída para scripts · só erros. |
Exemplo
# O que existe no catálogo
igrp bundle search
# form-crud-template 0.1.0 form-template nextjs Form CRUD (Template)
# process-management-ui 0.1.0 platform-ui nextjs Process Management UI
# template-migrator 0.1.0 migration-pack nextjs Template Migrator
# Planear um form CRUD no módulo registos (sem escrever)
igrp bundle add form-crud-template --project . --dry-run \
-p name=cliente -p label=Cliente -p module=registos -p resource=clientes
# [planned] metadata + .igrpstudio/registos/forms/cliente.json
# [planned] igrpstudio + .igrpstudio/features.json → form-crud-template
# Aplicar e verificar
igrp bundle add form-crud-template --project . -p name=cliente -p label=Cliente -p module=registos -p resource=clientes
igrp bundle list
igrp bundle doctorSem os parâmetros obrigatórios, add diz quais faltam (Faltam params obrigatórios: label, module, resource.) e termina com exit 1.
Como funciona
Cada bundle tem um bundle.json com a receita de instalação, aplicada sempre por esta ordem: npm → copy → metadata → skill → migrator → igrpstudio. Todos os destinos têm de ficar dentro do projeto (sem caminhos absolutos nem ..).
O que foi instalado fica em .igrpstudio/bundles.json (versão, parâmetros e o SHA-256 de cada ficheiro escrito). É isso que permite:
list— mostrar o que está instalado e por quem (CLI ou Studio IDE);doctor— detetar ficheiros alterados desde a instalação (drift);upgradeeremove— refazer ou desfazer a receita;adopt— registar uma instalação feita à mão, sem reaplicar.
O catálogo é guardado em cache em ~/.igrp/ (bundles-index-cache.json e bundles-cache/); search --force ignora a cache.
pnpm 11
Os passos npm usam pnpm add. Com pnpm 11, dependências com scripts de build por aprovar fazem o pnpm add terminar com erro e o passo falha. Declara-as em allowBuilds no pnpm-workspace.yaml do projeto antes de instalar.
Códigos de saída
| Código | Significado |
|---|---|
0 | Sucesso (inclui dry-run). |
1 | Validação — parâmetros em falta, bundle inexistente no catálogo, manifesto inválido. |
2 | Catálogo indisponível, falha de download ou de um passo da receita. |
Última atualização:
