Skip to content

Custom Generators

Ensure you have likec4 in your dependencies:

npm i likec4

You can define custom generators in your project config:

likec4.config.ts
import { defineConfig } from 'likec4/config'
export default defineConfig({
name: 'my-project',
title: 'My Project',
generators: {
'hello': async ({ likec4model, ctx }) => {
await ctx.write({
path: 'hello.txt', // relative to the project root
content: `Project: ${likec4model.project.id}`,
})
},
},
})

Now you can run your generator with CLI:

Terminal window
likec4 gen hello

In multi-project workspace use:

Terminal window
likec4 gen hello --project my-project
# Other options
likec4 gen hello --project my-project --use-dot

There is also helper function defineGenerators to define reusable generators:

shared_generators.ts
import { defineGenerators } from 'likec4/config'
export default defineGenerators({
'hello': async ({ likec4model, ctx }) => {
await ctx.write({
path: 'hello.txt', // relative to the project root
content: `Project: ${likec4model.project.id}`,
})
},
})

Now you can use it in your configs:

likec4.config.ts
import { defineConfig } from 'likec4/config'
import generators from './shared_generators'
export default defineConfig({
name: 'my-project',
title: 'My Project',
generators,
})