This is a proof of concept module for a feature in Nuxt 3 that automatically infers and generates schema based on user provided configuration from several sources using unjs/untyped and supports extending layers.
Schema can be defined in nuxt.schema.ts
or $schema
field in nuxt.config.ts
.
Read the proposal for Nuxt 3
This experiment is landed to Nuxt 3 core since 3.1.0 (https://github.com/nuxt/nuxt/pull/18410)
- Install
nuxt-config-schema
as dev dependency:
# npm
npm i -D nuxt-config-schema
# pnpm
pnpm add -D nuxt-config-schema
# yarn
yarn add nuxt-config-schema
- Add module to
nuxt.config
:
export default defineNuxtConfig({
modules: ['nuxt-config-schema'],
})
- Create
nuxt.schema.ts
:
export default defineNuxtConfigSchema({
appConfig: {
test2: {
$default: 'from nuxt.schema',
},
},
/** Config schema for another integration */
anotherConfig: {
aTest: '123',
},
})
- Use
nuxi dev
ornuxi build
commands
You can access generated schema (json, markdown and types) from .nuxt/schema/
directory and also hooks below:
-
schema:extend(schemaDefs)
: Extend schema defenitions (first call aftermodules:done
hook) -
schema:resolved(schema)
: Extend resolved schema after merging (first call aftermodules:done
hook) -
schema:beforeWrite(schema)
: Extend resolved schema just before writing to filesystem (called afterbuild:done
hook) -
schema:written
: Hook will be called when schema has been written and updated to filesystem
- Run
npm run dev:prepare
to generate type stubs. - Use
npm run dev
to start playground in development mode.