馃摚 Just Released! Our official workshop to level up from Nuxt 2 to Nuxt 3.

Register now

Modules Directory

馃И This feature is available on edge channel. Check out the Edge Channel Documentation to beta test.

Nuxt scans the modules/ directory and loads them before starting. It is a good place to place any local modules you develop while building your application.

The auto-registered files patterns are:

  • modules/*/index.ts
  • modules/*.ts

You don't need to add those local modules to your nuxt.config.ts separately.

modules/hello/index.ts
// `nuxt/kit` is a helper subpath import you can use when defining local modules
// that means you do not need to add `@nuxt/kit` to your project's dependencies
import { createResolver, defineNuxtModule, addServerHandler } from 'nuxt/kit'
export default defineNuxtModule({
meta: {
name: 'hello'
},
setup () {
const { resolve } = createResolver(import.meta.url)
// Add an API route
addServerHandler({
route: '/api/hello',
handler: resolve('./runtime/api-route')
})
}
})
modules/hello/runtime/api-route.ts
export default defineEventHandler(() => {
return { hello: 'world' }
}

When starting Nuxt, the hello module will be registered and the /api/hello route will be available.

The local modules are registered by alphabetical order. You can change the order by prefixing with a number if front of each directory:

modules/
1.first-module/
index.ts
2.second-module.ts