Publicar um pacote
Empacotar, o que entra no tarball, o registro estático — e por que o pacote é reprodutível.
Publicar é dois passos: empacotar (gerar o tarball) e enviar (copiar para um registro). Os dois são comandos, e o registro não é um servidor.
Empacotar#
dataforge check .
dataforge test tests/
dataforge pack dist/minha-lib-1.0.0.tar.gz 14.2 KB
sha256: 9eb3d7de7b8581abf905ad93c978514af39b65253ede72ee82d262c8fe7761d0O tarball é reprodutível: mtime zerado, uid e gid zerados. Sem isso o sha256 mudaria a cada empacotamento, e a verificação de integridade não significaria nada — dois downloads da mesma versão não teriam como ser comparados.
O que entra, e o que não#
| Entra | Fica de fora |
|---|---|
forge.toml | forge_modules/ |
o entry e tudo o que ele alcança | dist/ |
src/ | .git/ |
tests/ | arquivos fora do projeto |
README.md, LICENSE | o que o .gitignore já exclui |
O registro é uma pasta#
Não há servidor a manter: um registro é uma pasta com index.json e pacotes/*.tar.gz, servida por qualquer host estático.
registro/
index.json
pacotes/
validador-1.0.0.tar.gz
tabela-1.1.0.tar.gzdataforge publish --registry=../registroO do projeto vive em site/public/registry/ e vai ao ar junto com o site. Publicar numa pasta e versioná-la é um registro privado completo — o que uma empresa precisa para compartilhar bibliotecas internas sem infraestrutura.
A extração recusa o que sai da pasta#
Um pacote não pode escrever fora do lugar dele. A extração recusa caminho com ../ e recusa link simbólico — as duas formas clássicas de um tarball malicioso sobrescrever um arquivo do sistema.
Do outro lado: instalar#
dataforge add validador # a última versão
dataforge add validador@1.2.0 # uma exata
dataforge install # resolve o forge.toml inteiro
dataforge list # o que está instalado
dataforge remove validadorO cache fica em ~/.dataforge/cache/, entre projetos: instalar a mesma versão num segundo projeto não baixa de novo.
A lista antes de publicar#
dataforge check .limpodataforge test tests/verde, importando pelo nome do pacoteversionsubida, segundo o semver- README com um exemplo que roda
tar tzfconferido — nada de segredo, nada dedist/- o CHANGELOG diz o que mudou, e o que quebrou