MeekoModuleContext
interfaz Since 1.2.0
Objeto meeko que recibe setup de un módulo, en Node, durante meeko dev, meeko build y
meeko check (y en el servidor de lenguaje de un workspace de confianza). Nunca llega al
navegador. Las rutas aceptan una ruta absoluta, una URL file: (new URL("./x", import.meta.url))
o una ruta relativa a la raíz del proyecto.
import type { MeekoModuleContext } from "@meekojs/meeko/framework";Source code src/modules/define-meeko-module.ts:271
Declaración #
interface MeekoModuleContext {
readonly rootDir: string
readonly dev: boolean
readonly config: Readonly<MeekoConfig>
readonly hooks: MeekoHookable
addLayer(dir: string | URL): void
addComponentsDir(dir: string | URL, options?: { readonly prefix?: string; readonly exclude?: readonly string[] }): void
addLayout(name: string, file: string | URL): void
extendRoutes(extend: (routes: readonly RouteRecord[]) => readonly RouteRecord[]): void
addAutoImports(entries: ModuleAutoImport | readonly ModuleAutoImport[]): void
addAutoImportsDir(dir: string | URL, options: { readonly scope: 'app' | 'server' | 'shared' }): void
addPlugin(plugin: ModulePlugin | string | URL): void
addServerMiddleware(file: string | URL): void
addServerHandler(handler: ModuleServerHandler): void
addPublicFile(path: string, contents: string | Uint8Array | (() => string | Uint8Array | Promise<string | Uint8Array>), options?: ModulePublicFileOptions): void
addStylesheet(file: string | URL): void
addTypeTemplate(filename: string, contents: string): void
addHead(input: DocumentHead): void
addVitePlugin(plugin: object | readonly object[]): void
extendViteConfig(extend: (config: Record<string, any>, context: { readonly command: 'serve' | 'build'; readonly ssr: boolean }) => void | Record<string, any>): void
warn(message: string): void
}Example #
import { defineMeekoModule } from "@meekojs/meeko/framework";
export default defineMeekoModule({
meta: { name: "hello" },
setup(_options, meeko) {
meeko.addComponentsDir(new URL("./components", import.meta.url), { prefix: "Hello" });
meeko.addPlugin({ src: new URL("../macros/shared/runtime/hello.client.ts", import.meta.url) });
},
});Miembros #
config
#
readonly config: Readonly<MeekoConfig>Configuración de meeko.config.ts, tal como se cargó.
addLayer
#
addLayer(dir: string | URL): voidAñade una carpeta como layer, después de los de layers: sus app/pages, componentes,
autoimports y app/plugins. Debe tener app/pages y estar dentro del proyecto (un paquete en
node_modules lo está).
addComponentsDir
#
addComponentsDir(dir: string | URL, options?: { readonly prefix?: string; readonly exclude?: readonly string[] }): voidAñade componentes al autoimport. exclude son globs relativos a esta carpeta; los imports explícitos siguen funcionando.
addLayout
#
addLayout(name: string, file: string | URL): voidAñade un layout con nombre, como un archivo de app/layouts: las páginas lo eligen con
definePage({ layout: name }) o un +group.ts. Un layout del proyecto o de un layer con el
mismo nombre gana; dos módulos con el mismo nombre son un error. Un default envuelve las
páginas que no eligen layout si el proyecto no tiene app/layouts/default.meeko.
extendRoutes
#
extendRoutes(extend: (routes: readonly RouteRecord[]) => readonly RouteRecord[]): voidTransforma el manifiesto de rutas descubierto (aplicación, layers y módulos) antes de que lo
usen el servidor, el navegador, el prerender, el sitemap y los tipos. La función recibe las
rutas y devuelve la lista completa: puede añadir rutas que reutilizan el archivo de una página
(por ejemplo, /en/guide con el archivo de /guide), cambiarlas o quitarlas. Las funciones se
aplican en el orden de los módulos y el resultado se valida como un manifiesto: dos rutas con
la misma forma de URL son un error.
addAutoImports
#
addAutoImports(entries: ModuleAutoImport | readonly ModuleAutoImport[]): voidAñade autoimports de un paquete o archivo.
addAutoImportsDir
#
addAutoImportsDir(dir: string | URL, options: { readonly scope: 'app' | 'server' | 'shared' }): voidAñade al autoimport los exports de los archivos .ts de una carpeta, con el ámbito indicado.
Los sufijos .client.ts, .server.ts y .shared.ts mandan sobre scope.
addPlugin
#
addPlugin(plugin: ModulePlugin | string | URL): voidAñade un plugin de aplicación. Los de los módulos se ejecutan antes que los de app/plugins.
addServerMiddleware
#
addServerMiddleware(file: string | URL): voidAñade un middleware de servidor, como un archivo de server/middleware. Los de los módulos se
ejecutan antes que los del proyecto, en el orden en que se añaden.
addServerHandler
#
addServerHandler(handler: ModuleServerHandler): voidAñade un handler HTTP para una ruta exacta.
addPublicFile
#
addPublicFile(path: string, contents: string | Uint8Array | (() => string | Uint8Array | Promise<string | Uint8Array>), options?: ModulePublicFileOptions): voidAñade un archivo público, como si estuviera en public/: meeko build lo escribe en la salida
del cliente y meeko dev lo sirve. Una función se evalúa al escribirlo (en dev, en cada
petición), por ejemplo con las rutas de routes:resolved. Desde 1.8, options.headers añade
cabeceras a su respuesta en meeko dev y en los adaptadores con servidor, como server.headers
para esa ruta, que gana si fija la misma. El adaptador static no las escribe.
addStylesheet
#
addStylesheet(file: string | URL): voidRegisters a CSS file in Vite's client graph, processed with the project's PostCSS config. Relative paths resolve from rootDir; use a file URL for a stylesheet shipped by a module. Files are deduplicated in registration order, before app/styles/main.css.
addTypeTemplate
#
addTypeTemplate(filename: string, contents: string): voidRegisters a declaration in .meeko/types/modules; removed when the module is disabled.
addHead
#
addHead(input: DocumentHead): voidAñade entradas al <head> de todos los documentos (document.head). Los arrays se concatenan
en el orden de los módulos; title y titleTemplate se quedan con el último valor, y
document.head de meeko.config.ts se aplica al final. Como en document.head,
titleTemplate es una cadena y title es el título del sitio, que no pasa por la plantilla.
addVitePlugin
#
addVitePlugin(plugin: object | readonly object[]): voidAñade un plugin de Vite (u otro valor de plugins) a meeko dev y meeko build.
extendViteConfig
#
extendViteConfig(extend: (config: Record<string, any>, context: { readonly command: 'serve' | 'build'; readonly ssr: boolean }) => void | Record<string, any>): voidModifica la configuración inline de Vite de meeko dev y de cada build de meeko build antes
de usarla. La función recibe la configuración y puede cambiarla o devolver una nueva.
warn
#
warn(message: string): voidEscribe un aviso en la salida de errores con el nombre del módulo.