Configuration
Kimesh uses a kimesh.config.ts file at the root of your project. This file is loaded using c12 and provides type-safe configuration with full TypeScript support.
Minimal Configuration
ts
// kimesh.config.ts
import { defineKmConfig } from '@kimesh/kit'
export default defineKmConfig({
name: 'my-app',
})That's it! Kimesh works with sensible defaults. No configuration is technically required — just create src/routes/ and start adding .vue files.
Common Options
Development Server
ts
export default defineKmConfig({
dev: {
port: 3000,
host: 'localhost',
open: true, // Auto-open browser
},
})Head Management
ts
export default defineKmConfig({
app: {
head: {
title: 'My Application',
titleTemplate: '%s | My App',
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
],
htmlAttrs: { lang: 'en' },
},
},
})Modules
ts
import tailwindcss from '@kimesh/tailwindcss'
import shadcn from '@kimesh/shadcn'
export default defineKmConfig({
modules: [
tailwindcss,
[shadcn, { prefix: 'Ui' }],
],
})Layers
ts
export default defineKmConfig({
extends: [
'./layers/ui-layer', // Local layer
'@my-org/base-layer', // npm package
],
})Runtime Config
ts
export default defineKmConfig({
runtimeConfig: {
apiBase: '/api', // Override with KIMESH_API_BASE env var
features: {
darkMode: true,
},
},
})Access in your components:
vue
<script setup>
// useRuntimeConfig is auto-imported
const config = useRuntimeConfig()
console.log(config.apiBase)
</script>Custom Aliases
ts
import { fileURLToPath } from 'node:url'
export default defineKmConfig({
alias: {
images: fileURLToPath(new URL('./assets/images', import.meta.url)),
},
})Default aliases (~, @, ~~, @@, #build) are always available.
Configuration Files
Kimesh looks for configuration in this order:
kimesh.config.tskimesh.config.jskimesh.config.mjskimesh.config.cjs
Next Steps
- Full Configuration Reference — All configuration options in detail
- Routing — Learn about file-based routing
- Layers Guide — Build modular applications