Pular para o conteúdo principal
Versão: 0.5.0

Visão Geral de Dependências de Módulos

Alpha — Dependências de Módulos Podem Mudar

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.3 ou 1.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

  1. Declaração: Dependências são listadas em invowkmod.cue em requires
  2. Resolução: invowk module sync resolve restrições de versão para versões concretas
  3. Download: Módulos são clonados do Git e cacheados localmente
  4. Lock file: Versões resolvidas são gravadas em invowkmod.lock.cue
  5. Descoberta: Comandos ficam disponíveis via namespace quando a dependência é instalada
Somente Dependências Diretas

Comandos em um módulo só podem chamar comandos de:

  1. O mesmo módulo
  2. Módulos instalados globalmente (seus caminhos de descoberta)
  3. Módulos declarados diretamente na lista requires desse 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