@monkeyplus/flow
@monkeyplus/flow
@monkeyplus/flow es ahora un paquete reusable con un playground/ de referencia dentro del mismo workspace.
Desarrollo diario
pnpm dev: arranca el proyecto de referencia enplayground/pnpm build: construye elplayground/pnpm preview: previsualiza elplayground/
Empaquetado del paquete
pnpm build:package: compila el paquete publicable endist/pnpm pack:package: genera un tarball npm desdedist/pnpm publish:package: publica el paquete desdedist/con acceso publico
El workspace consume la API fuente del root para mantener DX local, mientras que dist/ genera un artefacto publicable con exports ya compilados.
Guia de uso
La guia detallada de authoring vive en docs/authoring.md e incluye:
- como registrar y configurar modulos
- como definir paginas estaticas y dinamicas
- como organizar templates, layouts y
*.context.ts - como trabajar con
FlowIslandyclient/islands/*
Documentacion complementaria:
docs/modules.md: referencia de modulos builtindocs/recipes.md: recetas basadas en el playground actual
Si vas a crear o mantener una app en Flow, ese archivo deberia ser el punto de entrada principal.
API pública
import { defineFlowConfig, defineLayoutContext, definePage } from '@monkeyplus/flow';
import { FlowIsland } from '@monkeyplus/flow/components';
import { getClientHead } from '@monkeyplus/flow/head';
import sitemapModule from '@monkeyplus/flow/modules/sitemap';
import strapiModule from '@monkeyplus/flow/modules/strapi';
import { createFlowNitroConfig } from '@monkeyplus/flow/nitro';
import { createFlowViteConfig } from '@monkeyplus/flow/vite';
import { installFlowVuePlugins } from '@monkeyplus/flow/vue';
Contexto de layout
Los layouts pueden tener un handler de contexto colocalizado usando views/layouts/<Layout>.context.ts.
Opcionalmente puedes definir views/layouts/global.context.ts para compartir datos entre todos los layouts. Flow fusiona primero el contexto global y luego el contexto especifico del layout, por lo que el layout especifico tiene prioridad si repite una clave.
import type { GlobalLayoutContextValue } from './global.context';
// views/layouts/Default.context.ts
import { defineLayoutContext } from '@monkeyplus/flow';
const defaultLayoutContext = defineLayoutContext({
async setup(ctx) {
return {
menuName: 'main',
localeCode: ctx.locale.code,
};
},
});
export type DefaultLayoutContextValue = GlobalLayoutContextValue & Awaited<ReturnType<typeof defaultLayoutContext.setup>>;
export default defaultLayoutContext;
Ese resultado se expone en el layout bajo context.layout.
<script setup lang="ts">
import type { DefaultLayoutContextValue } from './Default.context';
const props = defineProps<{
context?: {
layout?: DefaultLayoutContextValue
}
}>();
</script>
<template>
<slot />
<small>{{ props.context?.layout?.menuName }}</small>
</template>
Esto reemplaza el patrón anterior de shared/contexts para casos que pertenecen al layout. Si una lógica debe compartirse entre varios layouts, puedes ponerla en views/layouts/global.context.ts o extraerla a un helper .ts reutilizable y llamarlo desde cada *.context.ts.
Playground
La app de referencia vive en playground/ y ya no en la raíz. Eso permite mantener el root enfocado en la distribución del paquete sin perder el flujo de desarrollo existente.
Migraciones y Compatibilidad (Nuxt UI v4)
- USelect: En la versión actual de Nuxt UI (v4), el componente
USelect(y similares) requiere utilizar la propiedad:itemsen lugar de:optionspara poblar el listado de opciones.
Version History
| Version | Released | Vue | License |
|---|---|---|---|
| 6.2.6 | ^3.5.13 | MIT | |
| 6.2.5 | ^3.5.13 | MIT | |
| 6.2.4 | ^3.5.13 | MIT | |
| 6.2.3 | ^3.5.13 | MIT | |
| 6.2.2 | ^3.5.13 | MIT | |
| 6.2.1 | ^3.5.13 | MIT | |
| 6.2.0 | ^3.5.13 | MIT | |
| 6.1.7 | ^3.5.13 | MIT | |
| 6.1.6 | ^3.5.13 | MIT | |
| 6.1.5 | ^3.5.13 | MIT | |
| 6.1.4 | ^3.5.13 | MIT | |
| 6.1.3 | ^3.5.13 | MIT | |
| 6.1.2 | ^3.5.13 | MIT | |
| 6.1.1 | ^3.5.13 | MIT | |
| 6.1.0 | ^3.5.13 | MIT | |
| 6.0.191 | ^3.5.13 | MIT | |
| 6.0.190 | ^3.5.13 | MIT | |
| 6.0.189 | ^3.5.13 | MIT | |
| 6.0.188 | ^3.5.13 | MIT | |
| 6.0.187 | ^3.5.13 | MIT | |
| 6.0.186 | ^3.5.13 | MIT | |
| 6.0.185 | ^3.5.13 | MIT | |
| 6.0.184 | ^3.5.13 | MIT | |
| 6.0.183 | ^3.5.13 | MIT | |
| 6.0.182 | ^3.5.13 | MIT | |
| 6.0.181 | ^3.5.13 | MIT | |
| 6.0.180 | ^3.5.13 | MIT | |
| 6.0.178 | ^3.5.13 | MIT | |
| 6.0.177 | ^3.5.13 | MIT | |
| 6.0.176 | ^3.5.13 | MIT |
Showing the latest 30 of 252. See every release on npm
Pre-releases (257)
| Version | Released | Vue | License |
|---|---|---|---|
| 5.0.0-rc.233 | ^3.2.41 | MIT | |
| 5.0.0-rc.232 | ^3.2.41 | MIT | |
| 5.0.0-rc.231 | ^3.2.41 | MIT | |
| 5.0.0-rc.230 | ^3.2.41 | MIT | |
| 5.0.0-rc.229 | ^3.2.41 | MIT | |
| 5.0.0-rc.228 | ^3.2.41 | MIT | |
| 5.0.0-rc.227 | ^3.2.41 | MIT | |
| 5.0.0-rc.225 | ^3.2.41 | MIT | |
| 5.0.0-rc.224 | ^3.2.41 | MIT | |
| 5.0.0-rc.223 | ^3.2.41 | MIT | |
| 5.0.0-rc.222 | ^3.2.41 | MIT | |
| 5.0.0-rc.221 | ^3.2.41 | MIT | |
| 5.0.0-rc.220 | ^3.2.41 | MIT | |
| 5.0.0-rc.219 | ^3.2.41 | MIT | |
| 5.0.0-rc.218 | ^3.2.41 | MIT | |
| 5.0.0-rc.217 | ^3.2.41 | MIT | |
| 5.0.0-rc.216 | ^3.2.41 | MIT | |
| 5.0.0-rc.214 | ^3.2.41 | MIT | |
| 5.0.0-rc.213 | ^3.2.41 | MIT | |
| 5.0.0-rc.212 | ^3.2.41 | MIT | |
| 5.0.0-rc.211 | ^3.2.41 | MIT | |
| 5.0.0-rc.210 | ^3.2.41 | MIT | |
| 5.0.0-rc.209 | ^3.2.41 | MIT | |
| 5.0.0-rc.208 | ^3.2.41 | MIT | |
| 5.0.0-rc.207 | ^3.2.41 | MIT | |
| 5.0.0-rc.206 | ^3.2.41 | MIT | |
| 5.0.0-rc.205 | ^3.2.41 | MIT | |
| 5.0.0-rc.204 | ^3.2.41 | MIT | |
| 5.0.0-rc.203 | ^3.2.41 | MIT | |
| 5.0.0-rc.200 | ^3.2.41 | MIT |
Showing the latest 30 of 257. See every release on npm