Package Exports
- @closetechnology/scaffolds
- @closetechnology/scaffolds/lib/generator.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@closetechnology/scaffolds) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
🚀 Close Plugin Scaffold
Herramienta CLI para generar plugins de WordPress basados en el boilerplate de Close Marketing. Ahorra tiempo y mantén la consistencia en todos tus proyectos.
✨ Características
- 🎯 Generación rápida: Crea un plugin completo en segundos
- 🔧 Personalizable: Elige solo las características que necesitas
- 📝 Variables dinámicas: Reemplaza automáticamente nombres, prefijos y constantes
- 🎨 Interactivo: Modo con prompts o línea de comandos
- ♻️ Reutilizable: Basado en el boilerplate probado de Close Marketing
📦 Instalación
Opción 1: Instalación global desde npm (Recomendado)
npm install -g @closetechnology/scaffoldsAhora puedes usar close-scaffold o wp-scaffold desde cualquier directorio.
Opción 2: Instalación desde el repositorio
git clone https://github.com/closemarketing/close-scaffolds.git
cd close-scaffolds
npm install
npm linkOpción 3: Uso local sin instalación global
git clone https://github.com/closemarketing/close-scaffolds.git
cd close-scaffolds
npm install
npm start🎮 Uso
Ver Scaffolds Disponibles
close-scaffold listMuestra todos los scaffolds disponibles:
pluginwp- WordPress Pluginblock- Gutenberg Block (próximamente)
Modo Interactivo (Recomendado)
El modo interactivo te guía paso a paso:
close-scaffold create pluginwp
# o desde el repositorio
npm startEjemplo de sesión interactiva:
? Plugin name: Mi Super Plugin
? Plugin description: Plugin para gestión de contenido
? Author: Tu Nombre
? Plugin prefix (for functions): msp
? Output directory: ./
? Select features to include:
◉ Custom Post Types
◉ Custom Login
◉ Theme Integration
◯ WooCommerce Integration
◯ Blocks
◯ ShortcodesModo con Opciones (Automatizado)
Para scripts o automatización:
close-scaffold create pluginwp \
--name "Mi Plugin" \
--prefix "mp" \
--description "Descripción del plugin" \
--author "Tu Nombre" \
--output "./"Opciones Disponibles
--name, -n: Nombre del plugin--prefix, -p: Prefijo para funciones (solo letras minúsculas y guiones bajos)--description, -d: Descripción del plugin--author, -a: Autor del plugin--output, -o: Directorio de salida (por defecto:./)
Características Incluidas
El scaffold genera plugins con las siguientes características:
✅ Siempre Incluidas
- Estructura básica del plugin
- Sistema de constantes y prefijos
- Internacionalización (i18n)
- Custom Login personalizado
- Custom Post Types (Testimonios y Empresas)
- Integración con tema
🔧 Opcionales
- Bloques de Gutenberg
- Shortcodes
- Integración con WooCommerce
Estructura Generada
mi-plugin/
├── plugin.php
├── readme.txt
└── includes/
├── custom-login/
│ ├── class-ccaa-admin.php
│ ├── logo-login.svg
│ └── logo-mini.svg
├── post-types/
│ ├── cpt-testimonios.php
│ └── cpt-empresas.php
├── theme/
│ ├── functions.php
│ ├── style.css
│ ├── style-editor.css
│ └── assets/
├── blocks/ (opcional)
├── shortcodes/ (opcional)
└── woocommerce/ (opcional)Variables de Plantilla
El scaffold reemplaza automáticamente las siguientes variables:
{{PLUGIN_NAME}}: Nombre del plugin{{PLUGIN_DESCRIPTION}}: Descripción del plugin{{PLUGIN_AUTHOR}}: Autor del plugin{{PLUGIN_SLUG}}: Slug del plugin (nombre en minúsculas con guiones){{PREFIX}}: Prefijo para funciones (minúsculas:msp_){{PREFIX_UPPER}}: Prefijo para constantes (mayúsculas:MSP_){{CONSTANT_NAME}}: Nombre completo del plugin en mayúsculas (MI_SUPER_PLUGIN_){{CLASS_NAME}}: Nombre de clases{{TEXT_DOMAIN}}: Dominio de texto para i18n{{VERSION}}: Versión del plugin{{CURRENT_YEAR}}: Año actual
Ejemplo de Uso
# Generar plugin interactivamente
npm start
# Respuestas del prompt:
# Plugin name: Mi Super Plugin
# Plugin description: Plugin para gestión de contenido
# Author: Mi Nombre
# Plugin prefix: msp
# Output directory: ./
# Features: [✓] Custom Post Types [✓] Custom Login [✓] Theme Integration
# Resultado: ./mi-super-plugin/📚 Documentación Adicional
- EXAMPLES.md - Ejemplos de uso detallados
- Ver el código fuente del boilerplate en
../
🎯 Ventajas sobre otros métodos
vs. Copiar y Pegar manualmente
- ❌ Manual: Copiar carpetas, buscar/reemplazar en múltiples archivos, propenso a errores
- ✅ Scaffold: Un comando, todo automatizado, sin errores
vs. WP-CLI scaffold
- ❌ WP-CLI: Estructura genérica, sin personalización de Close Marketing
- ✅ Scaffold: Estructura probada, incluye login customizado, post types, tema
vs. NPX create-*
- ❌ NPX: Requiere publicar en npm, más complejo de mantener
- ✅ Scaffold: Local, fácil de modificar, control total
🔧 Desarrollo y Personalización
Modificar plantillas
Las plantillas están en templates/:
templates/
├── plugin.php # Plantilla del archivo principal
└── readme.txt # Plantilla del readmeVariables disponibles en plantillas:
{{PLUGIN_NAME}}- Nombre del plugin{{PLUGIN_DESCRIPTION}}- Descripción{{PLUGIN_AUTHOR}}- Autor{{PREFIX}}- Prefijo de funciones{{CONSTANT_NAME}}- Nombre de constantes{{TEXT_DOMAIN}}- Dominio de texto{{VERSION}}- Versión{{CURRENT_YEAR}}- Año actual
Modificar la lógica del generador
Edita lib/generator.js para:
- Cambiar cómo se procesan los archivos
- Añadir nuevas características
- Modificar el sistema de reemplazo de variables
Añadir nuevas características
- Edita
bin/cli.jsy añade la opción en el prompt:
{
name: 'Mi Nueva Feature',
value: 'mi-feature',
checked: false
}- Edita
lib/generator.jsy añade la lógica de copia:
if (features.includes('mi-feature')) {
await this.copyDirectory(
path.join(this.sourceDir, 'includes/mi-feature'),
path.join(includesDir, 'mi-feature'),
templateData
);
}🐛 Troubleshooting
Error: "Directory already exists"
rm -rf nombre-del-plugin
npm startError de permisos
chmod 755 /directorio/destinoDependencias desactualizadas
rm -rf node_modules package-lock.json
npm installEl CLI no se ejecuta
chmod +x bin/cli.js🤝 Contribuir
Este scaffold es para uso interno de Close Marketing, pero puedes:
- Crear issues para reportar bugs
- Proponer mejoras en la estructura
- Sugerir nuevas características
📝 Changelog
v1.0.0 (2025-10-07)
- ✨ Primera versión del scaffold
- 🎯 Modo interactivo con prompts
- 📝 Sistema de plantillas con variables dinámicas
- 🔧 Selección de características opcional
- 📦 Generación completa de plugins
📄 Licencia
GPL-2.0+ - Misma licencia que WordPress
Desarrollado por Close Marketing 🚀