Parameters & Types#
Panduan lengkap tentang parameters, types, dan kondisi di Lokio CLI.
Overview#
Parameters adalah input yang diminta dari user saat generate code. Setiap parameter memiliki:
- Name - Nama parameter
- Type - Tipe data (string, boolean, number)
- Required - Wajib diisi atau tidak
- Prompt - Text yang ditampilkan saat prompt
- Default - Nilai default (optional)
Parameter Structure#
parameters:
- name: "parameterName" # Required: Parameter name
type: "string" # Required: string | boolean | number
required: true # Required: true | false
prompt: "Prompt text" # Required: Text untuk prompt
default: "defaultValue" # Optional: Default valueTypes#
String#
Text input dari user.
Config:
- name: "componentName"
type: "string"
required: true
prompt: "Component name"
default: "MyComponent" # OptionalUsage in Template:
<%= componentName %> # "MyComponent"
<%= ComponentName %> # "MyComponent" (Capitalize)Prompt Behavior:
- User bisa input text bebas
- Jika ada default, akan ditampilkan sebagai placeholder
- Required: harus diisi
- Optional: bisa kosong (akan gunakan default jika ada)
Example:
◆ Component name: MyComponent
Boolean#
Yes/No question.
Config:
- name: "withProps"
type: "boolean"
required: false
prompt: "Include props interface?"
default: true # OptionalUsage in Template:
<% if (withProps) { %>
interface <%= Name %>Props {
// Props here
}
<% } %>Prompt Behavior:
- User pilih Yes/No (Y/n)
- Jika ada default, akan ditampilkan sebagai initial value
- Required: harus dijawab
- Optional: bisa skip (akan gunakan default jika ada)
Example:
◆ Include props interface? (Y/n): y
Number#
Numeric input.
Config:
- name: "count"
type: "number"
required: true
prompt: "Initial count"
default: 0 # OptionalUsage in Template:
const [count, setCount] = useState(<%= count %>);Prompt Behavior:
- User input angka
- Validasi: harus valid number
- Jika ada default, akan ditampilkan sebagai placeholder
- Required: harus diisi
- Optional: bisa kosong (akan gunakan default jika ada)
Example:
◆ Initial count: 10
Required vs Optional#
Required Parameters#
- name: "name"
type: "string"
required: true
prompt: "Component name"Behavior:
- Selalu ditanyakan saat generate
- Tidak bisa kosong
- Tidak ada default (atau default hanya sebagai placeholder)
- Ditanyakan dulu sebelum optional parameters
Optional Parameters#
- name: "withProps"
type: "boolean"
required: false
prompt: "Include props?"
default: trueBehavior:
- Ditanyakan setelah required parameters
- Bisa skip (Enter untuk default)
- Default value akan digunakan jika skip
- Ditanyakan terakhir
Default Values#
Default values digunakan jika user skip atau tidak mengisi.
String Default#
- name: "componentName"
type: "string"
required: false
prompt: "Component name"
default: "MyComponent"Behavior:
- Default ditampilkan sebagai placeholder
- User bisa Enter untuk gunakan default
- User bisa ketik untuk override default
Boolean Default#
- name: "withProps"
type: "boolean"
required: false
prompt: "Include props?"
default: trueBehavior:
- Default ditampilkan sebagai initial value (Y/n)
- User bisa Enter untuk gunakan default
- User bisa pilih Y/n untuk override
Number Default#
- name: "count"
type: "number"
required: false
prompt: "Initial count"
default: 0Behavior:
- Default ditampilkan sebagai placeholder
- User bisa Enter untuk gunakan default
- User bisa ketik angka untuk override
Prompt Text#
Prompt text adalah pertanyaan yang ditampilkan ke user.
Best Practices#
✅ Good:
prompt: "Component name"
prompt: "Hook name (without 'use' prefix)"
prompt: "Include props interface?"
prompt: "Initial count value"❌ Bad:
prompt: "name" # Too vague
prompt: "Enter component" # Unclear
prompt: "?" # Too shortTips#
- Clear and specific - Jelaskan apa yang diminta
- Include context - Tambahkan hint jika perlu
- Be concise - Jangan terlalu panjang
- Use examples - Jika perlu, tambahkan contoh di description
Parameter Order#
Parameters ditanyakan berdasarkan:
- Required parameters (dari atas ke bawah)
- Optional parameters (dari atas ke bawah)
Example Config:
parameters:
- name: "name" # Required - ditanyakan pertama
type: "string"
required: true
prompt: "Component name"
- name: "withProps" # Optional - ditanyakan kedua
type: "boolean"
required: false
prompt: "Include props?"
default: true
- name: "description" # Optional - ditanyakan ketiga
type: "string"
required: false
prompt: "Description"Flow:
- "Component name" (required)
- "Include props?" (optional)
- "Description" (optional)
Complete Example#
templates:
- name: "component"
description: "React component template"
path: "component.lokio"
output: "src/components/<%= Name %>.tsx"
parameters:
# Required string
- name: "name"
type: "string"
required: true
prompt: "Component name"
# Optional boolean with default
- name: "withProps"
type: "boolean"
required: false
prompt: "Include props interface?"
default: true
# Optional string
- name: "description"
type: "string"
required: false
prompt: "Component description"
# Required number
- name: "initialValue"
type: "number"
required: true
prompt: "Initial value"Validation#
Lokio akan validate:
- ✅ Parameter name format (camelCase recommended)
- ✅ Type harus: string, boolean, atau number
- ✅ Required harus: true atau false
- ✅ Prompt text harus ada
- ✅ Default value type harus sesuai dengan parameter type
Usage in Templates#
Accessing Parameters#
<%= name %> # Direct access
<%= Name %> # Capitalize (auto)
<%= withProps %> # Boolean
<%= initialValue %> # NumberConditional Based on Parameters#
<% if (withProps) { %>
interface <%= Name %>Props {
// Props
}
<% } %>Multiple Parameters#
export const <%= Name %> = () => {
<% if (description) { %>
// <%= description %>
<% } %>
return <div><%= name %></div>;
};Tips#
- Use descriptive names -
componentNamebukanname - Set defaults - Untuk optional parameters, set default value
- Clear prompts - Buat prompt text yang jelas
- Order matters - Required dulu, optional kemudian
- Type consistency - Pastikan type sesuai dengan usage di template