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

FieldTypeRequiredDescription
modes('dev' | 'prod')[]NoEnvironments 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'].
labelstringNoHuman-readable name shown in navigation and headings.

Mode behaviour

modes valueDev serverProduction build
[dev, prod]ActiveActive
[dev]ActiveNot built — routes return 404
[prod]Not shownActive
[]Not shownNot built

Built-in defaults

These collections are active without any configuration:

CollectionDefault modeslabel
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
},