MeekoConfig
interfaz
Configuración de proyecto de meeko.config.ts. Créela con defineMeekoConfig.
import type { MeekoConfig } from "@meekojs/meeko/build";Código fuente src/modules/define-meeko-config.ts:251
Declaración #
interface MeekoConfig {
readonly viewTransitions?: boolean
readonly components?: {
readonly dirs?: readonly {
readonly path: string
readonly prefix?: string
}[]
}
readonly layers?: readonly string[]
readonly extends?: readonly string[]
readonly modules?: readonly MeekoModuleEntry[]
readonly imports?: {
readonly appDirs?: readonly string[]
readonly sharedDirs?: readonly string[]
readonly serverDirs?: readonly string[]
}
readonly alias?: Readonly<Record<string, string | false>>
readonly server?: MeekoServerConfig
readonly css?: { readonly scopeAttribute?: 'all' | 'matched' }
readonly document?: DocumentConfig
readonly dev?: {
readonly serverLogs?: boolean
}
readonly devtools?: boolean | MeekoDevtoolsConfig
readonly site?: string
readonly sitemap?: boolean | SitemapConfig
readonly robots?: boolean | RobotsConfig
readonly theme?: boolean | ThemeConfig
}Ejemplo #
import type { MeekoConfig } from "@meekojs/meeko/framework";
const config: MeekoConfig = {
layers: ["./layers/base"],
modules: ["@acme/seo", ["./modules/hello", { greeting: "Hola" }]],
imports: { serverDirs: ["server/services"] },
server: { adapter: "node", port: 3000 },
};Propiedades #
viewTransitions
#
readonly viewTransitions?: booleanActiva View Transitions nativas en la navegación cliente; desactivadas por defecto. Respeta movimiento reducido.
components
#
readonly components?: {
readonly dirs?: readonly {
readonly path: string
readonly prefix?: string
}[]
}Component directories, relative to each source root. The default app/components is always included.
layers
#
readonly layers?: readonly string[]Layers: carpetas del proyecto con su propio app/pages, componentes, autoimports y
app/plugins, aplicadas después de la aplicación en el orden escrito. Las colisiones de URL
fallan.
extends
#
readonly extends?: readonly string[]Alias de layers que se mantiene: sus carpetas van antes que las de layers.
modules
#
readonly modules?: readonly MeekoModuleEntry[]Módulos creados con defineMeekoModule: un módulo importado, un nombre de paquete, una ruta a
un módulo o [módulo, opciones], aplicados en orden. Hasta 1.1 eran carpetas con
app/pages; esas carpetas siguen funcionando como layers en 1.x, con un aviso (use layers).
imports
#
readonly imports?: {
readonly appDirs?: readonly string[]
readonly sharedDirs?: readonly string[]
readonly serverDirs?: readonly string[]
}Carpetas de autoimports además de las de por defecto, relativas a la raíz del proyecto y de cada layer. Cada carpeta toma el ámbito de la carpeta que la contiene, como las de por defecto.
alias
#
readonly alias?: Readonly<Record<string, string | false>>Aliases de ruta propios, o cambios de los de Meeko. Cada clave es un prefijo que termina en /
y cada valor, una carpeta del proyecto (relativa a su raíz; también la de un layer) o false
para quitar el alias. Por defecto existen ~/ (la raíz del proyecto), @/ (app/),
#shared/ (shared/) y #server/ (server/, sólo en el código de servidor). Un alias propio
toma el ámbito de la carpeta a la que apunta, como los autoimports: dentro de server/, sólo
en el servidor; dentro de app/, en app/ y server/ pero no en shared/; en otro lugar, en
todo el proyecto. Se aplica en Vite (meeko dev, meeko build y todos los adaptadores), en los
tsconfig generados, en el editor y en los módulos de @utilities.
server
#
readonly server?: MeekoServerConfigDestino del servidor de producción. Por defecto, { adapter: "node" }.
css
#
readonly css?: { readonly scopeAttribute?: 'all' | 'matched' }Estilos de los componentes. scopeAttribute elige qué elementos reciben el atributo de
<style scoped>: "all" (por defecto en 1.x), todos los de la plantilla; "matched"
(desde 1.2), sólo los que algún selector con ámbito puede seleccionar. Con "matched", una
clase o un atributo que el script añade con la API del DOM a un elemento sin ref: ni on:
no recibe los estilos con ámbito si ese elemento quedó sin atributo. En 2.0, "matched"
pasará a ser el valor por defecto.
document
#
readonly document?: DocumentConfigDocumento HTML de la aplicación: lang de <html> y etiquetas y atributos comunes de
<head>, con la menor prioridad frente a useHead y al head de las páginas. Los módulos
añaden sus entradas con meeko.addHead; las de este campo se aplican después. Se fija en el
build y llega también al navegador, porque termina en el HTML.
dev
#
readonly dev?: {
readonly serverLogs?: boolean
}Opciones de meeko dev; no afectan a meeko build ni a meeko start. serverLogs: false
deja de reenviar a la consola del navegador lo que el código de servidor escribe con
console.log, info, warn, error o debug mientras atiende una petición (activado por
defecto). La terminal lo muestra igual en ambos casos.
devtools
#
readonly devtools?: boolean | MeekoDevtoolsConfigMeeko DevTools en meeko dev: con true (o un objeto con panel distinto de false),
meeko dev monta el panel dentro de la página sin código de la aplicación. Nunca llega a
meeko build, meeko start ni a las páginas prerenderizadas. Por defecto, false en 1.x: el
panel no aparece salvo que se pida. La extensión de Chrome y el puente del editor funcionan
con o sin esta opción.
site
#
readonly site?: stringURL pública del sitio, de la que sólo cuenta el origen (https://example.com, sin ruta). La
usan sitemap.xml, robots.txt y, con document.seo, <link rel="canonical"> y og:url.
Sin ella se usa MEEKO_PUBLIC_ORIGIN del entorno del build. Se fija en el build; no cambia
las comprobaciones de Origin, que siguen leyendo MEEKO_PUBLIC_ORIGIN o publicOrigin de
server/runtime.ts al ejecutarse.
sitemap
#
readonly sitemap?: boolean | SitemapConfigEscribe sitemap.xml con las páginas prerenderizadas y las rutas sin parámetros, salvo las
excluidas y las prerenderizadas con <meta name="robots"> noindex. Necesita site o
MEEKO_PUBLIC_ORIGIN. Desde 1.7, también las URL de sitemapEntries de definePage, como
las de las rutas dinámicas con SSR.
robots
#
readonly robots?: boolean | RobotsConfigEscribe robots.txt con las reglas de User-agent: * y, con sitemap, su URL absoluta. No
puede convivir con un public/robots.txt.
theme
#
readonly theme?: boolean | ThemeConfigTema claro/oscuro (y temas propios) sin parpadeo: la elección se guarda en una cookie, el
servidor escribe el tema en <html> desde el primer byte y un script en línea de <head> lo
aplica antes de pintar cuando el servidor no lo conoce (páginas prerenderizadas, adaptador
static, modo "system" sin client hint). Activa useTheme(). true usa los valores por
defecto; sin theme, nada cambia.
Véase también #
- Layers Framework full-stack