Visão Geral de Dependências de Módulos
Dependências de módulos ainda estão sendo refinadas. Embora nosso objetivo seja manter compatibilidade retroativa, mudanças incompatíveis podem ocorrer antes do release 1.0. Arquivos de lock mantêm builds reprodutíveis, mas o comportamento de resolução pode evoluir.
Dependências de módulos permitem que um módulo use comandos de outros módulos hospedados em repositórios Git. Dependências são declaradas em invowkmod.cue em requires e resolvidas em invowkmod.lock.cue.
O que são Dependências de Módulos?
Dependências de módulos são módulos externos dos quais seu módulo depende. Elas são:
- Hospedadas em repositórios Git (GitHub, GitLab, Bitbucket, etc.)
- Versionadas com semver (tags como
v1.2.3ou1.2.3) - Cacheadas localmente para uso offline e performance
- Namespaced por ID do módulo ou alias para evitar colisões
Início Rápido
1. (Opcional) Resolver uma Dependência
invowk module add resolve uma dependência, atualiza invowkmod.lock.cue e autoedita invowkmod.cue para adicionar a entrada em requires quando o arquivo existir:
invowk module add https://github.com/example/common.invowkmod.git ^1.0.0
2. Declarar em invowkmod.cue
module: "com.example.mytools"
version: "1.0.0"
description: "My tools"
requires: [
{
git_url: "https://github.com/example/common.invowkmod.git"
version: "^1.0.0"
alias: "common"
},
]
3. Sincronizar Dependências
invowk module sync
4. Verificar Dependências Resolvidas
invowk module deps
Namespaces e Aliases
Quando um módulo de dependência está instalado em um caminho de descoberta, execute seus comandos com o ID do módulo (ou o alias, se você definiu):
# Default namespace includes the resolved version
invowk cmd com.example.common@1.2.3 build
# With alias
invowk cmd common build
Como Funciona
- Declaração: Dependências são listadas em
invowkmod.cueemrequires - Resolução:
invowk module syncresolve restrições de versão para versões concretas - Download: Módulos são clonados do Git e cacheados localmente
- Lock file: Versões resolvidas são gravadas em
invowkmod.lock.cue - Descoberta: Comandos ficam disponíveis via namespace quando a dependência é instalada
Comandos em um módulo só podem chamar comandos de:
- O mesmo módulo
- Módulos instalados globalmente (seus caminhos de descoberta)
- Módulos declarados diretamente na lista
requiresdesse módulo
Dependências transitivas são resolvidas e cacheadas, mas seus comandos não ficam no escopo a menos que também estejam listadas diretamente.
Cache de Módulos
Dependências de módulos são cacheadas em ~/.invowk/modules/ por padrão:
~/.invowk/modules/
├── sources/
│ └── github.com/
│ └── example/
│ └── common.invowkmod/
└── github.com/
└── example/
└── common.invowkmod/
└── 1.2.3/
├── invowkmod.cue
└── invowkfile.cue
Sobrescreva a localização do cache:
export INVOWK_MODULES_PATH=/custom/cache/path
Próximos Passos
- Declarando Dependências - Aprenda a sintaxe de
requires - Comandos CLI - Comandos para gerenciamento de dependências
- Arquivo de Lock - Entenda o formato do lock file