Animated Circular Progress Bar0
Font.Lokio
CLI

Template Management

Panduan lengkap untuk mengelola templates di Lokio CLI


Parameters#

Parameter adalah input yang ditanya ke user saat menjalankan lokio gen. Parameter didefinisikan di lokio/configs.yaml dan bisa dipakai di dalam file .lokio.

Parameter name selalu ada secara otomatis — kamu tidak perlu mendefinisikannya.


Tipe Parameter#

1. Text (string)#

Input teks bebas.

parameters:
  - name: description
    type: string
    required: false
    prompt: "Deskripsi singkat (opsional):"
    default: "No description"

Saat lokio gen:

◇  Deskripsi singkat (opsional):
│  Handles user authentication

Di template:

/**
 * <%= description %>
 */
export class <%= pascalCase(name) %>Service {}

2. Yes / No (boolean)#

Toggle ya/tidak.

parameters:
  - name: useAsync
    type: boolean
    required: true
    prompt: "Gunakan async/await?"
    default: true

Saat lokio gen:

◇  Gunakan async/await?
│  Yes

Di template:

<% if (useAsync === 'TRUE') { %>
async findAll(): Promise<any[]> {
<% } else { %>
findAll(): any[] {
<% } %>
  return [];
}

Boolean di template menjadi string "TRUE" atau "FALSE".


3. Number (number)#

Input angka.

parameters:
  - name: port
    type: number
    required: false
    prompt: "Port number:"
    default: 3000

Di template:

app.listen(<%= port %>);
// Hasil: app.listen(3000);

4. Pilihan dari Daftar (options)#

User memilih dari daftar yang sudah ditentukan.

parameters:
  - name: type
    type: options
    required: true
    prompt: "Tipe controller:"
    options:
      - http
      - grpc
      - queue
    default: http

Saat lokio gen:

◇  Tipe controller:
│  ● http
│  ○ grpc
│  ○ queue

Di template:

<% if (type === 'http') { %>
@Controller()
export class <%= pascalCase(name) %>Controller {}
<% } else if (type === 'grpc') { %>
export class <%= pascalCase(name) %>GrpcHandler {}
<% } %>

Mendefinisikan Parameter di configs.yaml#

Contoh Lengkap#

# lokio/configs.yaml
 
templates:
  - name: service
    description: NestJS service class
    path: service.lokio
    output: src/services/<%= pascalCase(name) %>Service.ts
    parameters:
      - name: name
        type: string
        required: true
        prompt: "Nama service:"
 
      - name: useAsync
        type: boolean
        required: true
        prompt: "Gunakan async/await?"
        default: true
 
      - name: type
        type: options
        required: true
        prompt: "Tipe service:"
        options:
          - basic
          - repository
          - external-api
        default: basic
 
      - name: description
        type: string
        required: false
        prompt: "Deskripsi (opsional):"
        default: ""

Menggunakan Parameter di Template#

Menyisipkan Langsung#

// Parameter: name = "UserOrder"
export class <%= pascalCase(name) %>Service {}
// Hasil: export class UserOrderService {}

Dalam Kondisi#

<% if (type === 'repository') { %>
constructor(
  @InjectRepository(<%= pascalCase(name) %>)
  private repo: Repository<<%= pascalCase(name) %>>
) {}
<% } %>

Di Komentar#

/**
 * @description <%= description %>
 * @generated <%= new Date().getFullYear() %>
 */

Menambah Parameter Lewat CLI#

Saat lokio add, pilih "Add extra input variables besides 'name'?"

Atau edit langsung lokio/configs.yaml:

parameters:
  - name: layer         # nama variabel di template
    type: options
    required: true
    prompt: "Di layer mana?"   # pertanyaan yang muncul ke user
    options:
      - domain
      - application
      - infrastructure

Atau tambahkan lewat lokio edit <nama-template> → pilih ParametersAdd new parameter.


Urutan Prompt#

Parameter required: true selalu ditanya lebih dulu, baru yang opsional. Urutan dalam file configs.yaml menentukan urutan prompt untuk parameter dengan tingkat yang sama.


Tips#

Pre-fill Parameter Pertama#

Parameter pertama bisa langsung diisi dari command line:

lokio g service User
# 'User' otomatis jadi nilai parameter pertama (name)

Default Value#

Kalau user tidak mengisi parameter opsional, default dipakai:

- name: description
  type: string
  required: false
  prompt: "Deskripsi:"
  default: "Generated by Lokio"

User tinggal tekan Enter → nilai default terpakai.