@arroyavecommerce/cms-medusa
v0.4.1
Published
Plugin de Medusa con el CMS de arroyavecommerce: paginas y tema editables (modulo, workflows, API admin/store y UI de admin).
Maintainers
Readme
@arroyavecommerce/cms-medusa
Plugin de Medusa (>= 2.15) con el CMS de arroyavecommerce:
- Modulo
cms- modeloscms_pageycms_theme(borrador/publicado en JSON). - Workflows - crear/actualizar/publicar/borrar paginas y tema, con compensaciones
y revalidacion del storefront via webhook (
STOREFRONT_REVALIDATE_URL+CMS_REVALIDATE_SECRET). - API -
/admin/cms/*(CRUD + publish, validacion zod via middlewares) y/store/cms/*(solo contenido publicado). - Admin UI - ruta
Paginasque embebe el editor visual del storefront (VITE_STOREFRONT_URL, por defectohttp://localhost:8000).
Consumo
// medusa-config.ts del backend
plugins: [
{
resolve: "@arroyavecommerce/cms-medusa",
options: { enableUI: true },
},
],Imports utiles para tests/codigo del consumidor:
import { createCmsPageWorkflow /* ... */ } from "@arroyavecommerce/cms-medusa/workflows"
import { CMS_MODULE } from "@arroyavecommerce/cms-medusa/modules/cms"
import { CreateCmsPageSchema } from "@arroyavecommerce/cms-medusa/api/admin/cms/validators"Desarrollo
yarn build # medusa plugin:build
npx medusa plugin:db:generate # regenerar migraciones (necesita .env con DB_*)
npx medusa plugin:publish # publicar en el registro local (yalc)Publicar en npm — usar npm, NUNCA yarn
El artefacto publicable es .medusa/server (el build), y .medusa está en
.gitignore. yarn npm publish (Yarn Berry) consulta .gitignore al
empaquetar y excluye el build, publicando un paquete roto (le pasó a v0.2.0:
subía solo src/ sin código compilado). npm publish respeta el whitelist
files de package.json e incluye .medusa/server correctamente.
yarn build # 1) compilar (o dejar que lo haga prepublishOnly)
npm pack --dry-run # 2) verificar: debe listar .medusa/server/src/emails/render.js
npm publish # 3) publicar (respeta files[]; NO usar `yarn npm publish`)Las migraciones incluidas usan create table if not exists / CREATE INDEX IF NOT EXISTS:
son idempotentes sobre bases que ya tienen cms_page/cms_theme creadas por el
modulo original del backend (misma clase Migration20260702124338, mismo esquema).
