Collections Reference
The collections field in karaoke.config.ts controls which collections are visible in dev mode vs. production builds.
Structure
// karaoke.config.ts
export default defineConfig({
collections: {
'karaoke-cms': { modes: ['dev', 'prod'] },
notes: { modes: ['dev', 'prod'], label: 'Notes' },
scratch: { modes: ['dev'] }, // dev-only — never ships
},
});
CollectionConfig fields
| Field | Type | Required | Description |
|---|---|---|---|
modes | ('dev' | 'prod')[] | No | Environments where this collection is active. When modes includes 'prod', the collection appears in production builds. When only ['dev'], it is never built into the production site. Default: ['dev', 'prod']. |
label | string | No | Human-readable name shown in navigation and headings. |
Mode behaviour
| modes value | Dev server | Production build |
|---|---|---|
[dev, prod] | Active | Active |
[dev] | Active | Not built — routes return 404 |
[prod] | Not shown | Active |
[] | Not shown | Not built |
Built-in defaults
These collections are active without any configuration:
| Collection | Default modes | label |
|---|---|---|
blog | [dev, prod] | Blog |
docs | [dev, prod] | Docs |
karaoke-cms | [dev] | Handbook |
karaoke-cms is dev-only by default so the handbook never ships to production. Add an override in karaoke.config.ts to change this:
collections: {
'karaoke-cms': { modes: ['dev', 'prod'] }, // also ship handbook to production
},
Custom collections
Add any vault folder as a collection by declaring it in collections. The folder must exist at {vault}/{collection-name}/.
collections: {
notes: { modes: ['dev', 'prod'], label: 'Notes' },
portfolio: { modes: ['dev', 'prod'], label: 'Portfolio' },
scratch: { modes: ['dev'] }, // dev-only — never ships to production
},