Módulos
Nuxt Kit proporciona un conjunto de utilidades para ayudarte a crear y usar módulos. Puedes usar estas utilidades para crear tus propios módulos o reutilizar módulos existentes.
Los módulos son los bloques de construcción de Nuxt. Kit proporciona un conjunto de utilidades para ayudarte a crear y usar módulos. Puedes usar estas utilidades para crear tus propios módulos o reutilizar módulos existentes. Por ejemplo, puedes usar la función defineNuxtModule
para definir un módulo y la función installModule
para instalar un módulo programáticamente.
defineNuxtModule
Define un módulo de Nuxt, fusionando automáticamente los valores predeterminados con las opciones proporcionadas por el usuario, instalando cualquier hook que se proporcione y llamando a una función de configuración opcional para un control total.
Uso
import { defineNuxtModule } from '@nuxt/kit'
export default defineNuxtModule({
meta: {
name: 'my-module',
configKey: 'myModule'
},
defaults: {
enabled: true
},
setup (options) {
if (options.enabled) {
console.log('¡Mi módulo de Nuxt está habilitado!')
}
}
})
Tipo
// @errors: 2391
import type { ModuleDefinition, ModuleOptions, NuxtModule } from '@nuxt/schema'
// ---cut---
export function defineNuxtModule<TOptions extends ModuleOptions> (
definition?: ModuleDefinition<TOptions, Partial<TOptions>, false> | NuxtModule<TOptions, Partial<TOptions>, false>,
): NuxtModule<TOptions, TOptions, false>
Parámetros
definition: Un objeto de definición de módulo o una función de módulo. El objeto de definición de módulo debe contener las siguientes propiedades:
Propiedad | Tipo | Requerido | Descripción |
---|---|---|---|
meta | ModuleMeta | false | Metadatos del módulo. Define el nombre del módulo, la versión, la clave de configuración y la compatibilidad. |
defaults | T | ((nuxt: Nuxt) => T) | false | Opciones predeterminadas para el módulo. Si se proporciona una función, se llamará con la instancia de Nuxt como primer argumento. |
schema | T | false | Esquema para las opciones del módulo. Si se proporciona, las opciones se aplicarán al esquema. |
hooks | Partial<NuxtHooks> | false | Hooks a instalar para el módulo. Si se proporcionan, el módulo instalará los hooks. |
setup | (this: void, resolvedOptions: T, nuxt: Nuxt) => Awaitable<void | false | ModuleSetupInstallResult> | false | Función de configuración para el módulo. Si se proporciona, el módulo llamará a la función de configuración. |
Ejemplos
Usar configKey
para Hacer tu Módulo Configurable
Al definir un módulo de Nuxt, puedes establecer un configKey
para especificar cómo los usuarios deben configurar el módulo en su nuxt.config
.
import { defineNuxtModule } from '@nuxt/kit'
export default defineNuxtModule({
meta: {
name: 'my-module',
configKey: 'myModule'
},
defaults: {
// Opciones del módulo
enabled: true
},
setup (options) {
if (options.enabled) {
console.log('¡Mi módulo de Nuxt está habilitado!')
}
}
})
Los usuarios pueden proporcionar opciones para este módulo bajo la clave correspondiente en nuxt.config
.
export default defineNuxtConfig({
myModule: {
enabled: false
}
})
Definir Requisitos de Compatibilidad del Módulo
Si estás desarrollando un módulo de Nuxt y utilizando APIs que solo son compatibles con versiones específicas de Nuxt, se recomienda encarecidamente incluir compatibility.nuxt
.
export default defineNuxtModule({
meta: {
name: '@nuxt/icon',
configKey: 'icon',
compatibility: {
// Versión de nuxt requerida en formato semver.
nuxt: '>=3.0.0', // o usa '^3.0.0'
},
},
async setup() {
const resolver = createResolver(import.meta.url)
// Implementar
},
})
Si el usuario intenta usar tu módulo con una versión de Nuxt incompatible, recibirá una advertencia en la consola.
WARN El módulo @nuxt/icon está deshabilitado debido a problemas de incompatibilidad:
- [nuxt] Se requiere la versión de Nuxt ^3.1.0 pero actualmente se está usando 3.0.0
installModule
Instala un módulo de Nuxt especificado programáticamente. Esto es útil cuando tu módulo depende de otros módulos. Puedes pasar las opciones del módulo como un objeto a inlineOptions
y se pasarán a la función setup
del módulo.
Uso
import { defineNuxtModule, installModule } from '@nuxt/kit'
export default defineNuxtModule({
async setup () {
// instalará @nuxtjs/fontaine con la fuente Roboto y la fuente de respaldo Impact
await installModule('@nuxtjs/fontaine', {
// configuración del módulo
fonts: [
{
family: 'Roboto',
fallbacks: ['Impact'],
fallbackName: 'fallback-a',
}
]
})
}
})
Tipo
async function installModule (moduleToInstall: string | NuxtModule, inlineOptions?: any, nuxt?: Nuxt)
Parámetros
Propiedad | Tipo | Requerido | Descripción |
---|---|---|---|
moduleToInstall | string | NuxtModule | true | El módulo a instalar. Puede ser una cadena con el nombre del módulo o un objeto de módulo en sí. |
inlineOptions | any | false | Un objeto con las opciones del módulo para pasar a la función setup del módulo. |
nuxt | Nuxt | false | Instancia de Nuxt. Si no se proporciona, se recuperará del contexto a través de la llamada useNuxt() . |
Ejemplos
import { defineNuxtModule, installModule } from '@nuxt/kit'
export default defineNuxtModule({
async setup (options, nuxt) {
// instalará @nuxtjs/fontaine con la fuente Roboto y la fuente de respaldo Impact
await installModule('@nuxtjs/fontaine', {
// configuración del módulo
fonts: [
{
family: 'Roboto',
fallbacks: ['Impact'],
fallbackName: 'fallback-a',
}
]
})
}
})
※Esta página es una traducción no oficial de la documentación oficial de Nuxt.js.
La página correspondiente en la documentación oficial está aquí:
https://nuxt.com/docs/3.x/api/kit/modules