@uappi/public-sdk
v1.2.10
Published
Pacotes públicos para desenvolvimento do ecossistema Uappi
Readme
@uappi/public-sdk
Pacotes públicos (composables, tipos e componentes Vue 3) para desenvolvimento do ecossistema Uappi. Publicado como .ts/.vue cru — sem etapa de build — então os erros de compilação (imports de tipo, verbatimModuleSyntax, etc.) só aparecem quando o projeto consumidor faz o type-check. Por isso este repositório valida tudo antes de deixar chegar lá.
Setup
npm installIsso também instala os git hooks do Husky via prepare.
Scripts
| Script | O que faz |
|---|---|
| npm run lint | ESLint (eslint.config.mjs), com a regra @typescript-eslint/consistent-type-imports — pega imports de tipo sem type, que é a causa mais comum de quebrar o build de projetos consumidores com verbatimModuleSyntax habilitado. |
| npm run type-check | tsc --noEmit usando tsconfig.json, que tem verbatimModuleSyntax: true propositalmente — reproduz localmente o mesmo erro que apareceria no projeto consumidor. |
| npm run prepush | lint + type-check juntos. Roda automaticamente antes de qualquer git push (hook .husky/pre-push). |
Se npm run prepush falhar, o git push é bloqueado. Corrija os erros reportados antes de tentar de novo.
Fluxo de desenvolvimento
- Crie uma branch a partir da
main. - Faça as alterações. Rode
npm run lintenpm run type-checklocalmente se quiser adiantar (o pre-push já roda isso antes do push). - Commite usando Conventional Commits — o prefixo do commit decide o bump de versão automático quando a MR for mergeada (veja Versionamento e publicação):
fix: ...→ patchfeat: ...→ minorfeat!: ...ou corpo do commit comBREAKING CHANGE: ...→ major- qualquer outro prefixo (
chore:,docs:,refactor:, etc.) → patch por padrão
- Abra o Merge Request para a
main. A pipeline roda o jobverify(lint + type-check) automaticamente na MR. - Após aprovado, faça o merge. Isso dispara o job
releasenamain— não é preciso bumpar versão nem publicar manualmente.
Versionamento e publicação (CI/CD)
O .gitlab-ci.yml tem dois jobs:
verify— roda em toda pipeline de Merge Request. Executalintetype-check. É a mesma checagem do hook local, mas visível na revisão do MR.release— roda apenas em push direto namain(ou seja, no merge de uma MR aprovada). Faz, nessa ordem:- Roda
lintetype-checkde novo (segurança extra, já que o hook local pode ser pulado com--no-verify). - Olha os commits desde a última tag
vX.Y.Ze decide o bump (patch/minor/major) pelas regras de Conventional Commits acima. - Atualiza a versão no
package.json. - Publica no npm (
npm publish --access public). - Só se a publicação funcionar: commita a nova versão e cria a tag
vX.Y.Zde volta namain, com[skip ci]no commit para não disparar a pipeline de novo.
- Roda
Se o job release falhar (ex: token expirado, lint quebrado), nada é publicado e a versão não muda — corrija o problema e re-rode o job manualmente pela pipeline no GitLab, sem precisar de outra MR.
Variáveis de CI/CD necessárias (Settings → CI/CD → Variables no GitLab)
| Variável | Uso | Observação |
|---|---|---|
| NPM_TOKEN | Autenticação no registry do npm para o npm publish | Token do tipo Granular Access Token, escopo @uappi ou pacote específico, permissão Read and write, com expiração — precisa ser rotacionado periodicamente. |
| GITLAB_PUSH_TOKEN | Permite o job release dar git push/criar tag de volta na main protegida | Personal ou Project Access Token, scope write_repository, com role que tenha permissão de push na main (Maintainer, se a proteção da branch exigir). Também expira — se o release começar a falhar com 401, é o primeiro lugar a checar. |
Ambas marcadas como Protected e Masked.
Bootstrap (já feito, só como referência)
O job release precisa de uma tag de referência para calcular "commits desde o último release". A tag inicial foi criada manualmente uma única vez, apontando para a versão já publicada no npm no momento em que o CI foi introduzido:
git tag v1.2.9 origin/main
git push origin v1.2.9Não repita esse passo — é só histórico de como o processo começou.
