Saltar al contenido
Meeko
Escribe para buscar en las guías y en la referencia de la API. Ábrela desde cualquier página con / o Ctrl K; muévete con las flechas y entra con Intro.
Empezar

Contenidos

En esta página

MeekoModuleContext

interfaz Desde 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.

ts
import type { MeekoModuleContext } from "@meekojs/meeko/framework";

Código fuente src/modules/define-meeko-module.ts:271

Declaración #

ts
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
}

Ejemplo #

ts
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 #

rootDir #

propiedad sólo lectura

readonly rootDir: string

Carpeta absoluta del proyecto.

dev #

propiedad sólo lectura

readonly dev: boolean

true durante meeko dev.

config #

propiedad sólo lectura

readonly config: Readonly<MeekoConfig>

Configuración de meeko.config.ts, tal como se cargó.

hooks #

propiedad sólo lectura

readonly hooks: MeekoHookable

Hooks de build.

addLayer #

método

addLayer(dir: string | URL): void

Añ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 #

método

addComponentsDir(dir: string | URL, options?: { readonly prefix?: string; readonly exclude?: readonly string[] }): void

Añade componentes al autoimport. exclude son globs relativos a esta carpeta; los imports explícitos siguen funcionando.

addLayout #

método desde 1.5.0

addLayout(name: string, file: string | URL): void

Añ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 #

método desde 1.8.0

extendRoutes(extend: (routes: readonly RouteRecord[]) => readonly RouteRecord[]): void

Transforma 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 #

método

addAutoImports(entries: ModuleAutoImport | readonly ModuleAutoImport[]): void

Añade autoimports de un paquete o archivo.

addAutoImportsDir #

método

addAutoImportsDir(dir: string | URL, options: { readonly scope: 'app' | 'server' | 'shared' }): void

Añ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 #

método

addPlugin(plugin: ModulePlugin | string | URL): void

Añade un plugin de aplicación. Los de los módulos se ejecutan antes que los de app/plugins.

addServerMiddleware #

método

addServerMiddleware(file: string | URL): void

Añ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 #

método

addServerHandler(handler: ModuleServerHandler): void

Añade un handler HTTP para una ruta exacta.

addPublicFile #

método

addPublicFile(path: string, contents: string | Uint8Array | (() => string | Uint8Array | Promise<string | Uint8Array>), options?: ModulePublicFileOptions): void

Añ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 #

método

addStylesheet(file: string | URL): void

Registers 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 #

método

addTypeTemplate(filename: string, contents: string): void

Registers a declaration in .meeko/types/modules; removed when the module is disabled.

addHead #

método

addHead(input: DocumentHead): void

Añ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 #

método

addVitePlugin(plugin: object | readonly object[]): void

Añade un plugin de Vite (u otro valor de plugins) a meeko dev y meeko build.

extendViteConfig #

método

extendViteConfig(extend: (config: Record<string, any>, context: { readonly command: 'serve' | 'build'; readonly ssr: boolean }) => void | Record<string, any>): void

Modifica 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 #

método

warn(message: string): void

Escribe un aviso en la salida de errores con el nombre del módulo.

Véase también #

¿Te sirvió esta página?

Añadir un comentario

Se envía al elegir «Sí» o «No». Solo se guardan la página, tu respuesta y el comentario: ni cookies ni datos tuyos.

0 de 2000 caracteres

Editar en GitHub: packages/meeko/src/modules/define-meeko-module.ts