mgpanel-cli 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -1
- package/bin/mgpanel.js +286 -0
- package/package.json +1 -1
package/README.md
CHANGED
package/bin/mgpanel.js
CHANGED
|
@@ -193,6 +193,292 @@ renderPage(pageFromPath()).catch(err => {
|
|
|
193
193
|
"utf8"
|
|
194
194
|
);
|
|
195
195
|
|
|
196
|
+
// dev/config.md: Documentación para IDEs (Cursor, etc.)
|
|
197
|
+
const configMD = `# MGPanel - Configuración de Desarrollo
|
|
198
|
+
|
|
199
|
+
Esta documentación está diseñada para ayudar a IDEs como Cursor y otros editores a entender el contexto de desarrollo con MGPanel.
|
|
200
|
+
|
|
201
|
+
## ¿Qué es MGPanel?
|
|
202
|
+
|
|
203
|
+
MGPanel es un sistema de gestión de contenido (CMS) basado en Node.js y MongoDB que permite crear sitios web usando HTML, CSS y JavaScript puro, sin frameworks complejos. Los proyectos MGPanel utilizan una arquitectura modular donde las páginas se componen de módulos reutilizables.
|
|
204
|
+
|
|
205
|
+
## Estructura del Proyecto
|
|
206
|
+
|
|
207
|
+
\`\`\`
|
|
208
|
+
proyecto/
|
|
209
|
+
├── pages/ # Páginas del sitio
|
|
210
|
+
│ └── <nombre-pagina>/
|
|
211
|
+
│ └── page.json # Configuración de la página (ruta, título, módulos)
|
|
212
|
+
├── modules/ # Módulos reutilizables
|
|
213
|
+
│ └── <nombre-modulo>/
|
|
214
|
+
│ ├── <nombre-modulo>.html
|
|
215
|
+
│ ├── <nombre-modulo>.css
|
|
216
|
+
│ └── <nombre-modulo>.js
|
|
217
|
+
├── assets/ # Archivos estáticos globales
|
|
218
|
+
│ ├── css/
|
|
219
|
+
│ │ └── style.css
|
|
220
|
+
│ └── js/
|
|
221
|
+
│ └── app.js
|
|
222
|
+
├── dev/ # Utilidades de desarrollo
|
|
223
|
+
│ ├── config.md # Este archivo
|
|
224
|
+
│ └── preview.js # Script para preview local
|
|
225
|
+
└── index.html # Punto de entrada para preview local
|
|
226
|
+
\`\`\`
|
|
227
|
+
|
|
228
|
+
## Comandos Disponibles
|
|
229
|
+
|
|
230
|
+
### Crear una Página
|
|
231
|
+
|
|
232
|
+
\`\`\`bash
|
|
233
|
+
mgpanel make page <nombre-pagina>
|
|
234
|
+
\`\`\`
|
|
235
|
+
|
|
236
|
+
**Ejemplo:**
|
|
237
|
+
\`\`\`bash
|
|
238
|
+
mgpanel make page about
|
|
239
|
+
mgpanel make page contacto
|
|
240
|
+
\`\`\`
|
|
241
|
+
|
|
242
|
+
Esto crea:
|
|
243
|
+
- \`pages/<nombre-pagina>/page.json\` - Archivo de configuración de la página
|
|
244
|
+
|
|
245
|
+
**Estructura de page.json:**
|
|
246
|
+
\`\`\`json
|
|
247
|
+
{
|
|
248
|
+
"route": "/about",
|
|
249
|
+
"title": "About",
|
|
250
|
+
"description": "Descripción de la página about.",
|
|
251
|
+
"modules": []
|
|
252
|
+
}
|
|
253
|
+
\`\`\`
|
|
254
|
+
|
|
255
|
+
### Crear un Módulo
|
|
256
|
+
|
|
257
|
+
\`\`\`bash
|
|
258
|
+
mgpanel make module <nombre-modulo>
|
|
259
|
+
\`\`\`
|
|
260
|
+
|
|
261
|
+
**Ejemplo:**
|
|
262
|
+
\`\`\`bash
|
|
263
|
+
mgpanel make module header
|
|
264
|
+
mgpanel make module hero-banner
|
|
265
|
+
mgpanel make module footer
|
|
266
|
+
\`\`\`
|
|
267
|
+
|
|
268
|
+
Esto crea en \`modules/<nombre-modulo>/\`:
|
|
269
|
+
- \`<nombre-modulo>.html\` - Estructura HTML del módulo
|
|
270
|
+
- \`<nombre-modulo>.css\` - Estilos CSS del módulo
|
|
271
|
+
- \`<nombre-modulo>.js\` - Lógica JavaScript del módulo
|
|
272
|
+
|
|
273
|
+
### Asociar un Módulo a una Página
|
|
274
|
+
|
|
275
|
+
\`\`\`bash
|
|
276
|
+
mgpanel add module <nombre-modulo> --to <nombre-pagina>
|
|
277
|
+
\`\`\`
|
|
278
|
+
|
|
279
|
+
**Ejemplo:**
|
|
280
|
+
\`\`\`bash
|
|
281
|
+
mgpanel add module header --to home
|
|
282
|
+
mgpanel add module hero-banner --to home
|
|
283
|
+
mgpanel add module footer --to home
|
|
284
|
+
\`\`\`
|
|
285
|
+
|
|
286
|
+
Esto actualiza el archivo \`pages/<nombre-pagina>/page.json\` añadiendo el módulo al array \`modules\`:
|
|
287
|
+
|
|
288
|
+
\`\`\`json
|
|
289
|
+
{
|
|
290
|
+
"route": "/",
|
|
291
|
+
"title": "Home",
|
|
292
|
+
"description": "Página principal.",
|
|
293
|
+
"modules": [
|
|
294
|
+
{ "name": "header" },
|
|
295
|
+
{ "name": "hero-banner" },
|
|
296
|
+
{ "name": "footer" }
|
|
297
|
+
]
|
|
298
|
+
}
|
|
299
|
+
\`\`\`
|
|
300
|
+
|
|
301
|
+
**Importante:** Los módulos se renderizan en el orden en que aparecen en el array \`modules\`.
|
|
302
|
+
|
|
303
|
+
### Servidor de Desarrollo
|
|
304
|
+
|
|
305
|
+
\`\`\`bash
|
|
306
|
+
mgpanel dev [puerto]
|
|
307
|
+
\`\`\`
|
|
308
|
+
|
|
309
|
+
Inicia un servidor HTTP local para previsualizar el proyecto.
|
|
310
|
+
|
|
311
|
+
- **Puerto por defecto:** 3000
|
|
312
|
+
- **Acceso:** http://localhost:3000 (o el puerto especificado)
|
|
313
|
+
|
|
314
|
+
El servidor:
|
|
315
|
+
- Sirve archivos estáticos (HTML, CSS, JS, imágenes)
|
|
316
|
+
- Implementa routing SPA: rutas sin extensión devuelven \`index.html\`
|
|
317
|
+
- Soporta hot-reload manual (refrescar el navegador)
|
|
318
|
+
|
|
319
|
+
**Ejemplos:**
|
|
320
|
+
\`\`\`bash
|
|
321
|
+
mgpanel dev # Puerto 3000
|
|
322
|
+
mgpanel dev 8080 # Puerto 8080
|
|
323
|
+
\`\`\`
|
|
324
|
+
|
|
325
|
+
## Flujo de Trabajo Recomendado
|
|
326
|
+
|
|
327
|
+
1. **Crear un módulo:**
|
|
328
|
+
\`\`\`bash
|
|
329
|
+
mgpanel make module header
|
|
330
|
+
\`\`\`
|
|
331
|
+
|
|
332
|
+
2. **Editar el módulo:**
|
|
333
|
+
- Edita \`modules/header/header.html\`
|
|
334
|
+
- Edita \`modules/header/header.css\`
|
|
335
|
+
- Edita \`modules/header/header.js\`
|
|
336
|
+
|
|
337
|
+
3. **Crear/editar una página:**
|
|
338
|
+
\`\`\`bash
|
|
339
|
+
mgpanel make page home
|
|
340
|
+
\`\`\`
|
|
341
|
+
|
|
342
|
+
4. **Asociar módulos a la página:**
|
|
343
|
+
\`\`\`bash
|
|
344
|
+
mgpanel add module header --to home
|
|
345
|
+
mgpanel add module hero --to home
|
|
346
|
+
mgpanel add module footer --to home
|
|
347
|
+
\`\`\`
|
|
348
|
+
|
|
349
|
+
5. **Iniciar servidor de desarrollo:**
|
|
350
|
+
\`\`\`bash
|
|
351
|
+
mgpanel dev
|
|
352
|
+
\`\`\`
|
|
353
|
+
|
|
354
|
+
6. **Acceder a la página:**
|
|
355
|
+
- http://localhost:3000 (página home)
|
|
356
|
+
- http://localhost:3000/about (si existe la página about)
|
|
357
|
+
|
|
358
|
+
## Convenciones y Reglas
|
|
359
|
+
|
|
360
|
+
### Nombres de Páginas y Módulos
|
|
361
|
+
|
|
362
|
+
- Usar solo letras minúsculas, números y guiones
|
|
363
|
+
- No usar espacios ni caracteres especiales
|
|
364
|
+
- Ejemplos válidos: \`home\`, \`about-us\`, \`contacto\`, \`header\`, \`hero-banner\`
|
|
365
|
+
- Ejemplos inválidos: \`About Us\`, \`contact_page\`, \`mi@modulo\`
|
|
366
|
+
|
|
367
|
+
### Estructura de Módulos
|
|
368
|
+
|
|
369
|
+
Cada módulo debe tener exactamente 3 archivos con el mismo nombre base:
|
|
370
|
+
|
|
371
|
+
\`\`\`
|
|
372
|
+
modules/<nombre-modulo>/
|
|
373
|
+
├── <nombre-modulo>.html
|
|
374
|
+
├── <nombre-modulo>.css
|
|
375
|
+
└── <nombre-modulo>.js
|
|
376
|
+
\`\`\`
|
|
377
|
+
|
|
378
|
+
### CSS y JavaScript Globales
|
|
379
|
+
|
|
380
|
+
- **Global CSS:** \`assets/css/style.css\` - Se carga en todas las páginas
|
|
381
|
+
- **Global JS:** \`assets/js/app.js\` - Se carga en todas las páginas
|
|
382
|
+
- **Módulo CSS:** Se carga automáticamente cuando el módulo es usado
|
|
383
|
+
- **Módulo JS:** Se carga automáticamente cuando el módulo es usado
|
|
384
|
+
|
|
385
|
+
### Preview Local
|
|
386
|
+
|
|
387
|
+
El archivo \`index.html\` y \`dev/preview.js\` permiten previsualizar las páginas localmente:
|
|
388
|
+
|
|
389
|
+
- Lee \`pages/<nombre>/page.json\`
|
|
390
|
+
- Carga los módulos especificados en el orden definido
|
|
391
|
+
- Inyecta CSS y JS de cada módulo automáticamente
|
|
392
|
+
- Soporta routing basado en la URL
|
|
393
|
+
|
|
394
|
+
## Integración con MGPanel CMS
|
|
395
|
+
|
|
396
|
+
Cuando despliegues el proyecto en MGPanel:
|
|
397
|
+
|
|
398
|
+
1. Las páginas se sincronizan con el CMS
|
|
399
|
+
2. Los módulos se pueden reutilizar entre páginas
|
|
400
|
+
3. El contenido puede ser editado desde el panel de administración
|
|
401
|
+
4. La estructura de archivos se mantiene compatible
|
|
402
|
+
|
|
403
|
+
## Consejos para IDEs
|
|
404
|
+
|
|
405
|
+
- Los archivos \`page.json\` definen la configuración de cada página
|
|
406
|
+
- Los módulos son componentes independientes y reutilizables
|
|
407
|
+
- El orden de los módulos en \`page.json\` determina el orden de renderizado
|
|
408
|
+
- Usa autocompletado para referencias entre módulos y páginas
|
|
409
|
+
- Valida los nombres de módulos antes de asociarlos a páginas
|
|
410
|
+
`;
|
|
411
|
+
|
|
412
|
+
fs.writeFileSync(path.join(projectPath, "dev", "config.md"), configMD, "utf8");
|
|
413
|
+
|
|
414
|
+
// README.md en la raíz del proyecto
|
|
415
|
+
const readmeMD = `# Proyecto MGPanel
|
|
416
|
+
|
|
417
|
+
Este proyecto ha sido creado con **MGPanel CLI**, un sistema para desarrollar sitios web usando HTML, CSS y JavaScript puro, organizados de forma modular.
|
|
418
|
+
|
|
419
|
+
## 📚 Documentación de Desarrollo
|
|
420
|
+
|
|
421
|
+
Para entender completamente cómo trabajar con este proyecto, consulta la documentación completa en:
|
|
422
|
+
|
|
423
|
+
**\`dev/config.md\`**
|
|
424
|
+
|
|
425
|
+
Este archivo contiene información detallada sobre:
|
|
426
|
+
- Comandos para crear páginas y módulos
|
|
427
|
+
- Cómo asociar módulos a páginas
|
|
428
|
+
- Estructura del proyecto
|
|
429
|
+
- Flujo de trabajo recomendado
|
|
430
|
+
- Convenciones y mejores prácticas
|
|
431
|
+
|
|
432
|
+
## 🚀 Inicio Rápido
|
|
433
|
+
|
|
434
|
+
1. **Crear un módulo:**
|
|
435
|
+
\`\`\`bash
|
|
436
|
+
mgpanel make module nombre-modulo
|
|
437
|
+
\`\`\`
|
|
438
|
+
|
|
439
|
+
2. **Crear una página:**
|
|
440
|
+
\`\`\`bash
|
|
441
|
+
mgpanel make page nombre-pagina
|
|
442
|
+
\`\`\`
|
|
443
|
+
|
|
444
|
+
3. **Asociar módulo a página:**
|
|
445
|
+
\`\`\`bash
|
|
446
|
+
mgpanel add module nombre-modulo --to nombre-pagina
|
|
447
|
+
\`\`\`
|
|
448
|
+
|
|
449
|
+
4. **Iniciar servidor de desarrollo:**
|
|
450
|
+
\`\`\`bash
|
|
451
|
+
mgpanel dev
|
|
452
|
+
\`\`\`
|
|
453
|
+
|
|
454
|
+
## 📁 Estructura del Proyecto
|
|
455
|
+
|
|
456
|
+
\`\`\`
|
|
457
|
+
.
|
|
458
|
+
├── pages/ # Páginas del sitio
|
|
459
|
+
│ └── <nombre>/page.json
|
|
460
|
+
├── modules/ # Módulos reutilizables
|
|
461
|
+
│ └── <nombre>/
|
|
462
|
+
│ ├── <nombre>.html
|
|
463
|
+
│ ├── <nombre>.css
|
|
464
|
+
│ └── <nombre>.js
|
|
465
|
+
├── assets/ # Recursos globales
|
|
466
|
+
│ ├── css/style.css
|
|
467
|
+
│ └── js/app.js
|
|
468
|
+
├── dev/ # Desarrollo
|
|
469
|
+
│ ├── config.md # 📖 Documentación completa para IDEs
|
|
470
|
+
│ └── preview.js
|
|
471
|
+
└── index.html # Preview local
|
|
472
|
+
\`\`\`
|
|
473
|
+
|
|
474
|
+
## 🔗 Más Información
|
|
475
|
+
|
|
476
|
+
- **Documentación de desarrollo:** Ver \`dev/config.md\`
|
|
477
|
+
- **MGPanel CLI:** https://github.com/miguayaba/mgpanel-cli
|
|
478
|
+
`;
|
|
479
|
+
|
|
480
|
+
fs.writeFileSync(path.join(projectPath, "README.md"), readmeMD, "utf8");
|
|
481
|
+
|
|
196
482
|
console.log("✅ Proyecto creado correctamente");
|
|
197
483
|
console.log("👉 Ejecuta: cd " + projectName + " && mgpanel dev");
|
|
198
484
|
}
|