Skip to content
Meeko
Type to search the guides and the API reference. Open it from any page with / or Ctrl K; move with the arrow keys and open a result with Enter.
Get started

Contents

On this page

Not translated yet

This page has not been translated into English yet, so it is shown in Spanish.

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.

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

Source code 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
}

Example #

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 since 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 since 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.

See also #

Was this page helpful?

Add a comment

It is sent when you choose “Yes” or “No”. Only the page, your answer and the comment are stored: no cookies and no personal data.

0 of 2000 characters

Edit on GitHub: packages/meeko/src/modules/define-meeko-module.ts