Pular para o conteúdo

Vários projetos

Às vezes, você pode querer dividir seu modelo LikeC4 em vários modelos, com base em domínios, equipes ou qualquer outro critério.

Você pode fazer isso criando vários projetos no seu workspace e vinculando-os entre si.
Também pode usar esse recurso para compartilhar seu modelo com outras equipes ou projetos.

Crie arquivos likec4.config.json nas pastas que você deseja transformar em projetos:

  • Directorycloud
    • likec4.config.json
    • service1.c4
    • service2.c4
    • …
  • Directoryexternals
    • likec4.config.json
    • amazon.c4
    • …

Os projetos podem ser aninhados.
Nesse caso, os arquivos do projeto aninhado não fazem parte do projeto pai.

  • Directorycloud
    • likec4.config.json
    • service1.c4
    • service2.c4
    • Directorynested
      • likec4.config.json
      • service3.c4 // fará parte do projeto ‘nested’, não do projeto ‘cloud’

Você pode importar elementos de outros projetos usando a palavra-chave import.

import { serviceA } from 'projectA'
model {
serviceB = service {
-> serviceA.api 'calls serviceA'
}
}

Você pode compartilhar arquivos de especificação (ou qualquer outra fonte LikeC4) entre vários projetos usando a opção de configuração include.

Adicione uma configuração include ao seu projeto para incluir arquivos de diretórios fora da pasta do projeto:

{
"$schema": "https://likec4.dev/schemas/config.json",
"name": "cloud",
"include": {
"paths": ["../shared"]
}
}
  • Directoryshared
    • specs.c4
    • common-styles.c4
  • Directorycloud
    • likec4.config.json
    • services.c4
    • …
  • Directoryexternals
    • likec4.config.json
    • amazon.c4
    • …

Os projetos cloud e externals podem incluir a especificação compartilhada:

cloud/likec4.config.json
{
"$schema": "https://likec4.dev/schemas/config.json",
"name": "cloud",
"include": {
"paths": ["../shared"]
}
}
externals/likec4.config.json
{
"$schema": "https://likec4.dev/schemas/config.json",
"name": "externals",
"include": {
"paths": ["../shared"]
}
}

A configuração include aceita um objeto com as seguintes propriedades:

{
"$schema": "https://likec4.dev/schemas/config.json",
"name": "my-project",
"include": {
"paths": ["../shared", "../common/specs"],
"maxDepth": 5,
"fileThreshold": 50
}
}
  • paths - Array de caminhos relativos de diretórios (obrigatório)
  • maxDepth - Profundidade máxima de diretórios a percorrer (padrão: 3, intervalo: 1-20)
  • fileThreshold - Emite um aviso quando mais arquivos do que esse limite forem carregados (padrão: 30)

Como alternativa, você pode usar links simbólicos para compartilhar arquivos:

  • Directoryshared
    • specs.c4
  • Directorycloud
    • specs.c4 // -> ../shared/specs.c4
    • likec4.config.json
    • …
  • Directoryexternals
    • specs.c4 // -> ../shared/specs.c4
    • likec4.config.json
    • …