@zorraquino/zcli
v1.22.2
Published
Herramienta CLI de Zorraquino para la creación y gestión de proyectos del Framework Zorraquino.
Maintainers
Readme
ZCLI
Herramienta de línea de comandos con utilidades para la creación, desarrollo y mantenimiento de proyectos con el Framework Zorraquino.
🚀 Instalación
npm install -g @zorraquino/zcliRequisitos:
- Bun >= 1.0.0 (se instalará automáticamente si no está presente)
- Node.js >= 22.13
- Git
📖 Uso
zcli [command] [options]Para ver la lista completa de comandos:
zcli --help🎯 Comandos Principales
Todos los comandos detectan el framework del proyecto en el directorio actual (server/main.php + vite.config.ts → z-cms; src/index.php + webpack.config.js → cms-zorraquino) y usan sus herramientas: Vite/Bun/oxlint/Prettier/Vitest en z-cms, webpack/npm en cms-zorraquino (test, lint, format, check, create-block y create-template solo existen en z-cms).
Creación de Proyectos
create-app: Clonar e inicializar un nuevo proyecto. Pregunta qué framework/front usar (o--framework):z-cms— front en React (Vite, Tailwind 4) + API JSON. Instala Composer y Bun, creaapp/,config/,.env/.htaccess, build inicial.cms-zorraquino— front en Smarty + API headless. Instala Composer y npm,.env, carpetas/permisos yoverrides/(bin/service.sh), build con webpack.
En ambos casos termina con el wizard opcional de bases de datos y
zcli doctor.zcli create-app zcli create-app --framework cms-zorraquinoinit-app: Inicializar un directorio que ya contiene el código del framework (se detecta automáticamente;--frameworklo fuerza)zcli init-appdb:setup: Crear las bases de datos del proyecto (principal y logs), inicializarlas y guardar la conexión en.env. En z-cms la inicialización son las migraciones de Phinx más los datos iniciales (idempotente); en cms-zorraquino, la importación de los dumps dedatabase/. Interactivo, o sin preguntas con opciones:zcli db:setup zcli db:setup --yes --user root --password '' --database mi_web --logs-database mi_web_logs zcli db:setup --demo # además carga una web de muestra (home, sección, blog, menú e imágenes)Requiere el cliente
mysql/mariadb(se busca en el PATH y en rutas de MAMP/XAMPP/Homebrew; o indícalo con--mysql-bin). Si no está disponible, muestra los comandos para hacerlo a mano. Sin Phinx (composer installpendiente) importadatabase/schema/*.sql; los dumps no se sobrescriben en una base con tablas salvo con--forceext:add <slug>,ext:update <slug>,ext:list: Extensiones de z-cms (componentes de contenido y, más adelante, módulos) desde el catálogo z-cms-extensions: se copian aextensions/<slug>/del proyecto, se registran como componente de página, se añaden a los tipos de bloque que indiques, se aplican sus migraciones y se añaden vacías al.envlas claves que declare la extensión (envdel manifiesto, p. ej.MAILCHIMP_*,HUBSPOT_*,SALESFORCE_*deforms;zcli doctoravisa de las que falten según las integraciones configuradas enconfig/forms.json). Solo z-cmszcli ext:list zcli ext:add news --blocks hero,text zcli ext:add news --from ../z-cms-extensions # catálogo local (desarrollo) zcli ext:update newsfront:set <slug>,front:list(ycreate-app --front react|vue|smarty): Fronts alternativos de z-cms desde el catálogo z-cms-fronts: sustituyenapp/yvite.config.ts(conservandoapp/build), aplican sus dependencias alpackage.json(retirando las de React), reinstalan y compilan.reactes el front incluido en z-cms. Solo z-cmszcli create-app --front vue zcli front:list zcli front:set vue # exige --force si app/src/components/blocks tiene bloques propiostheme:export <slug>,theme:set <origen>,theme:info(ycreate-app --theme <origen>): Themes de z-cms, creados a partir de webs en desarrollo.theme:exportgenera en../z-cms-theme-<slug>(o--to) un theme con el front del proyecto (app/,public/,vite.config.ts,tsconfig.json), la config de bloques y textos (config/*.json,config/langs/), las extensiones instaladas como requisito, las dependencias propias, una guía del sistema de diseño para personas y asistentes de IA (app/THEME.md+theme.blocks.json: bloques y variantes con qué datos pintan, componentes y parámetros, formularios, tokens y recetas de composición sacadas de la web de origen) y, con--with-content, el contenido (niveles, páginas, bloques, menús e imágenes) como seederContenidoTheme.theme:setlo instala en un proyecto: front base del catálogo si hace falta, código y config del theme, extensiones que requiera, dependencias, migraciones, contenido (si la base está vacía) y build. Un theme es de un front concreto (theme.json → front). Solo z-cmszcli theme:export corporativo --name "Corporativo" --with-content # desde la web en desarrollo zcli theme:set https://github.com/Zorraquino/z-cms-theme-corporativo.git zcli theme:set ../z-cms-theme-corporativo --no-content # directorio local, sin contenido zcli create-app --theme ../z-cms-theme-corporativodb:migrate: Aplicar las migraciones pendientes a las dos bases de datos (tras actualizar el proyecto o instalar una extensión) y cargar los datos iniciales si la principal está vacía. Con--statussolo informa (código 1 si hay pendientes). Solo z-cmszcli db:migrate zcli db:migrate --statusdoctor: Comprobar que todo está conectado: PHP ≥ 8.2 conmysqli, Composer, Bun,vendor/ynode_modules/instalados,.envcon las clavesDB_*, conexión real a las dos bases de datos (con mysqli, como la app), estado de las migraciones y build. Sale con código 1 si hay problemas; se ejecuta también como resumen al final decreate-app/init-appzcli doctorcreate-block: Crear un nuevo bloque/componente Reactzcli create-blockcreate-template: Crear una nueva plantilla/layoutzcli create-template
Desarrollo
dev: Iniciar servidor de desarrollo Vitezcli devdev:host: Iniciar servidores de desarrollo (PHP + Vite) con acceso desde red local. El servidor PHP usa el router de zcli, que emula las reglas del.htaccessy activa el modo desarrollo (assets desde Vite con HMR)zcli dev:hostserve: Servir el build de producción con PHP (sin Vite): la plantilla carga los assets compilados deapp/build. Requiere haber ejecutadozcli buildzcli build && zcli serve --port 8000
Compilación
build: Compilar proyecto para producciónzcli buildbuild:dev: Compilar proyecto en modo desarrollozcli build:devwatch: Compilar y observar cambios (producción)zcli watchwatch:dev: Compilar y observar cambios (desarrollo)zcli watch:dev
Calidad de Código
test: Ejecutar tests con Vitestzcli testlint: Ejecutar linter en el proyectozcli lintformat: Formatear código con Prettierzcli formatcheck: Verificar formateo sin modificar archivoszcli checkreact-scan: Analizar performance de aplicación Reactzcli react-scan
Mantenimiento
backup: Crear backup en./backup/con los medios (imágenes, documentos, vídeos), los adjuntos de formularios (server/storage/formularios) y el volcado de las dos bases de datos. Se restaura conzcli restore <fichero>zcli backupcleanup: Limpiar archivos temporales y configurar permisoszcli cleanupupdate: Actualizar el core del proyecto a la última versión publicada de z-cms (tagsvX.Y.Z) sin tocar lo que es del proyecto (app/,config/,extensions/,.env…). Si el proyecto es un repositorio git (lo es por defecto:create-appconserva el historial del core como remotozcms), hace un merge a tres bandas que respeta tus cambios y señala conflictos; si no, sustituye solo las rutas del core (core.json) conservando los ficheros que hayas modificado. Después:composer install, migraciones, dependencias del core enpackage.json, instalación JS y buildzcli update --check # instalado vs último publicado zcli update # última versión zcli update --to v4.1.0 # una versión concreta zcli update --finish # tras resolver un merge con conflictos a mano zcli update --force # sin git: sobrescribir los ficheros del core modificadosupgrade: Actualizar ZCLI a la última versiónzcli upgrade
📚 Documentación Completa
Para documentación detallada, consulta:
- Documentación de Usuario y Desarrollador: Índice completo de documentación
- Guía del Desarrollador: Cómo contribuir y extender ZCLI
- Arquitectura: Detalles técnicos de la arquitectura
- Reglas de Contexto para AI: Contexto para Cursor AI y asistentes similares
🔧 Workflow Típico
Crear un Nuevo Proyecto
# 1. Crear proyecto (instala dependencias, ofrece crear las bases de datos y termina con zcli doctor)
zcli create-app
# 2. Navegar al directorio
cd mi-proyecto
# 3. Iniciar desarrollo
zcli dev:host
# 4. En otra terminal, observar cambios
zcli watch:devAñadir un Nuevo Bloque
# 1. Crear bloque
zcli create-block
# 2. El proyecto se compila automáticamente
# 3. El bloque ya está disponible en el CMSAntes de Deploy
# 1. Formatear código
zcli format
# 2. Verificar linting
zcli lint
# 3. Ejecutar tests
zcli test
# 4. Compilar para producción
zcli build
# 5. Verificar build localmente
zcli serve🐛 Troubleshooting
Bun no está instalado
El CLI lo detecta y muestra el comando oficial de instalación (no lo ejecuta por ti):
curl -fsSL https://bun.sh/install | bashPuerto ya en uso
# Encontrar proceso usando el puerto
lsof -i :5173
# Matar proceso
kill -9 <PID>Build falla
# Ejecutar Vite directamente para ver error completo
bunx --bun vite build --mode=developmentPara más soluciones, consulta la Guía de Troubleshooting
🤝 Contribuir
Las contribuciones son bienvenidas! Por favor:
- Fork del repositorio
- Crea una rama para tu feature:
git checkout -b feature/mi-feature - Commit tus cambios:
git commit -m "feat: descripción" - Push a la rama:
git push origin feature/mi-feature - Crea un Pull Request
Ver la Guía del Desarrollador para más detalles.
📦 Releases
Para publicar una nueva versión:
# Asegúrate de estar en master y tener todos los cambios commiteados
npm run release [patch|minor|major]El script automáticamente:
- Incrementa la versión en
package.json - Actualiza el
CHANGELOG.mdcon los commits desde el último release - Crea un tag de git
- Hace push a GitHub
- GitHub Actions se encarga de publicar en npm y crear el release
📜 Licencia
MIT © Zorraquino Comunicación SLU
🔗 Enlaces
- GitHub: https://github.com/Zorraquino/zcli
- npm: https://www.npmjs.com/package/@zorraquino/zcli
- Framework Zorraquino: https://github.com/Zorraquino/z-cms (si está disponible) o https://gitlab.com/zorraquino-dev/cms/z-cms
- Documentación: ./docs/README.md
Última actualización: Noviembre 2025
