meeko preview
Ejecuta la salida de meeko build en su runtime real (Node, Bun, Deno, wrangler dev o un servidor de archivos) para probarla antes de desplegar.
meeko preview arranca el build de producción con el runtime de su adaptador, para comprobar que lo que se va a desplegar funciona: no compila nada, así que antes hay que ejecutar meeko build con el mismo adaptador.
| Adaptador | Qué ejecuta |
|---|---|
node |
El mismo servidor que meeko start, en este proceso. |
bun |
bun .meeko/output/bun/index.js, como proceso hijo. |
deno |
deno run -A .meeko/output/deno/main.js, como proceso hijo. |
cloudflare |
wrangler dev --config .meeko/output/cloudflare/wrangler.jsonc, el Worker en workerd con bindings locales. |
static |
Un servidor pequeño que responde como un hosting estático, con la CSP y las cabeceras de server. |
Uso#
meeko build --adapter static
meeko preview --adapter statichttp://localhost:4173Tipo#
meeko preview [directorio] [--adapter <node|cloudflare|bun|deno|static>]Opciones#
| Opción | Tipo | Por defecto | Descripción |
|---|---|---|---|
[directorio] |
ruta | . |
Raíz del proyecto. |
--adapter <nombre> o --adapter=<nombre> |
node | bun | deno | cloudflare | static |
server.adapter, o node |
Qué build ejecutar. Debe coincidir con el del último meeko build. |
MEEKO_PORT (o PORT), MEEKO_HOST |
número, texto | 127.0.0.1:4173 |
Dirección del servidor. Con cloudflare se pasan a wrangler dev como --port e --ip. |
MEEKO_PUBLIC_ORIGIN y demás variables |
Las mismas de meeko start; el .env del proyecto se lee antes de arrancar y los procesos hijos heredan el entorno. |
Resultado#
- Node y
staticimprimen la URL y sirven en este proceso hastaCtrl+C. Como enmeeko start, loopback y0.0.0.0se muestran comohttp://localhost:4173y, con0.0.0.0o::, siguen líneasRed:con las direcciones de red. Las salidas de Bun y Deno escriben lo mismo; Deno sólo lista la red con--allow-sys=networkInterfaces, que-Aincluye. - Bun, Deno y Cloudflare heredan la consola del proceso hijo, que escribe su propia salida;
meeko previewle reenvíaSIGINTySIGTERMy termina con el código de salida del hijo. staticsirve el archivo pedido, elindex.htmlde la carpeta o404.htmlcon estado404(o el textoNot Foundsi el build no tiene404.html, porque faltaapp/error.meeko), sin publicar_headersni_meeko/, y aplicacontentSecurityPolicyyheaderscomo lo haría el hosting conheaderFiles. Sólo admiteGETyHEAD(otro método da405conAllow: GET, HEAD) y todo llevacache-control: no-cache.
Ejemplos#
Un sitio estático antes de subirlo#
meeko build --adapter static
MEEKO_PORT=5000 meeko preview --adapter staticcurl -sI http://127.0.0.1:5000/
# HTTP/1.1 200 OK
# content-type: text/html; charset=utf-8
# cache-control: no-cache
curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:5000/no-existe
# 404Bun o Deno#
meeko build --adapter bun
meeko preview --adapter bunEl build ya lleva todas las dependencias: lo que funciona aquí funciona copiando sólo .meeko/output/bun/ al servidor. Con Deno, preview concede todos los permisos (-A); en producción bastan --allow-net, --allow-env y --allow-read de la carpeta.
Cloudflare Workers en local#
pnpm add -D wrangler
meeko build --adapter cloudflare
MEEKO_PORT=8787 meeko preview --adapter cloudflarepreview usa el Wrangler de la aplicación o, si no lo tiene, el de la instalación de Meeko.
El adaptador de la configuración#
Con server: { adapter: "deno" } en meeko.config.ts, --adapter sobra en los dos comandos:
meeko build
meeko previewErrores comunes#
Previsualizar otro adaptador que el construido#
meeko build --adapter static
meeko previewSin --adapter, preview toma el de la configuración (por defecto, node) y busca otro build: No hay build de producción en …\.meeko\output\node\index.mjs; ejecuta meeko build. Con los demás adaptadores el mensaje nombra su archivo, como No hay build de producción en …\.meeko\output\deno\main.js; ejecuta meeko build --adapter deno o No hay build estático en …\.meeko\output\static; ejecuta meeko build --adapter static.
meeko build --adapter static
meeko preview --adapter staticCloudflare sin Wrangler#
meeko build --adapter cloudflare
meeko preview --adapter cloudflareSi ni la aplicación ni Meeko encuentran Wrangler: Wrangler no está instalado; añádelo con pnpm add -D wrangler para previsualizar el build de cloudflare.
pnpm add -D wrangler
meeko preview --adapter cloudflare--adapter sin nombre#
meeko preview --adapterFalta el nombre del adaptador en --adapter de preview, con el uso y código 1. Un nombre que no existe da Adaptador desconocido: …; usa node, cloudflare, deno, bun o static.
meeko preview --adapter bunNotas#
- Para probar, no para producción. Con Node,
previewystartson el mismo servidor; constatic, el servidor depreviewsólo imita a un hosting y no debe exponerse a Internet. Con Deno,-Aconcede más permisos de los necesarios. - Runtimes.
bunydenodeben estar en elPATH. Si el ejecutable no existe, el error esBun no está instalado o no está en el PATH; instálalo desde https://bun.sh para previsualizar el build de bun(o el equivalente de Deno). Un gestor de versiones con shims, comomiseoasdf, puede interceptar el comando y mostrar su propio error. - Windows y POSIX. El proceso hijo se lanza sin ventana propia en Windows, con la consola del padre, y recibe reenviados
SIGINTySIGTERM. Si el hijo termina por una señal,previewsale con código1. - Sesiones. Con Node, Bun y Deno,
previewes producción: necesitaMEEKO_REDIS_URLosessionsenserver/runtime.ts, comomeeko start. - CSP.
previewaplicaserver.contentSecurityPolicyyserver.headersigual que producción (constaticdesde1.3; con los adaptadores con servidor desde1.7). Es el sitio para comprobar que la CSP no bloquea nada antes de desplegar.