Skip to content

Layers

Layers are self-contained modules that extend your Kimesh application with routes, components, composables, and configuration. They enable modular architecture and code reuse across projects.

What is a Layer?

A layer is a mini Kimesh application with its own:

  • routes/ — File-based routes (merged with the host)
  • components/ — Auto-imported components
  • composables/ — Auto-imported composables
  • kimesh.config.ts — Configuration (merged with host config)

Using Layers

Local Layers

ts
// kimesh.config.ts
import { defineKmConfig } from '@kimesh/kit'

export default defineKmConfig({
  extends: [
    './layers/ui-layer',
    './layers/auth-layer',
  ],
})

npm Layers

ts
export default defineKmConfig({
  extends: [
    '@my-org/base-layer',
  ],
})

Layer Structure

layers/auth-layer/
├── src/
│   ├── routes/
│   │   ├── _auth.vue          # Pathless layout
│   │   └── _auth/
│   │       ├── login.vue      # /login
│   │       └── register.vue   # /register
│   ├── components/
│   │   └── AuthForm.vue       # Auto-imported as <AuthForm>
│   └── composables/
│       └── useAuth.ts         # Auto-imported as useAuth()
├── kimesh.config.ts
└── package.json

Layer Configuration

ts
// layers/auth-layer/kimesh.config.ts
import { defineKmConfig } from '@kimesh/kit'

export default defineKmConfig({
  name: 'auth-layer',
  basePath: '/auth',  // Prefix all routes
})

Creating Layers with CLI

bash
# Create a new layer
km layer create my-layer

# List all layers
km layer list

# Get layer info
km layer info my-layer

# Validate layer structure
km layer validate my-layer

How Layers Merge

When multiple layers extend the host application:

FeatureMerge Strategy
RoutesMerged — layer routes added to host router
ComponentsMerged — host components override layer conflicts
ComposablesMerged — host composables override layer conflicts
CSSConcatenated
ConfigDeep merged — host config takes priority
ModulesConcatenated (deduplicated)

Next Steps

Released under the MIT License.