holygrail5 1.0.11 → 1.0.13
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 +360 -56
- package/config.json +133 -2
- package/dist/assets/intro.jpg +0 -0
- package/dist/assets/introm.jpg +0 -0
- package/dist/assets/margen.webp +0 -0
- package/dist/guide-styles.css +1111 -0
- package/dist/index.html +4323 -0
- package/dist/output.css +2413 -0
- package/dist/themes/dutti-demo.html +415 -0
- package/dist/themes/dutti.css +1781 -0
- package/generate-css.js +14 -65
- package/package.json +4 -4
- package/src/.data/.previous-values.json +49 -2
- package/src/assets/intro.jpg +0 -0
- package/src/assets/introm.jpg +0 -0
- package/src/assets/margenes.webp +0 -0
- package/src/assets/px.png +0 -0
- package/src/build/asset-manager.js +152 -0
- package/src/build/build-orchestrator.js +185 -0
- package/src/build/theme-transformer.js +234 -0
- package/src/css-generator.js +9 -3
- package/src/docs-generator/guide-styles.css +1111 -0
- package/src/docs-generator/html-generator.js +534 -1056
- package/src/generators/ratio-generator.js +75 -0
- package/src/generators/spacing-generator.js +16 -0
- package/src/watch-config.js +207 -58
- package/themes/dutti/_checkboxes.css +637 -11
- package/themes/dutti/_inputs.css +296 -34
- package/themes/dutti/_radios.css +177 -40
- package/themes/dutti/_switches.css +90 -64
- package/themes/dutti/demo.html +249 -389
- package/themes/dutti/theme.css +0 -2
- package/src/components/_buttons.css +0 -255
- package/src/components/_checkboxes.css +0 -68
- package/src/components/_forms.css +0 -62
- package/src/components/_inputs.css +0 -84
- package/src/components/_labels.css +0 -28
- package/src/components/_radios.css +0 -64
- package/src/components/_switches.css +0 -70
package/README.md
CHANGED
|
@@ -8,24 +8,46 @@ Generador de CSS + guía HTML pensado para design systems ligeros: declaras tu `
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
## Índice
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
11
|
+
- [HolyGrail5](#holygrail5)
|
|
12
|
+
- [Índice](#índice)
|
|
13
|
+
- [1. Instalación](#1-instalación)
|
|
14
|
+
- [2. Flujo rápido](#2-flujo-rápido)
|
|
15
|
+
- [3. Scripts disponibles](#3-scripts-disponibles)
|
|
16
|
+
- [4. ¿Qué se genera?](#4-qué-se-genera)
|
|
17
|
+
- [5. Estructura del proyecto](#5-estructura-del-proyecto)
|
|
18
|
+
- [6. Configurar `config.json`](#6-configurar-configjson)
|
|
19
|
+
- [6.1 Ejemplo mínimo](#61-ejemplo-mínimo)
|
|
20
|
+
- [6.2 Propiedades globales](#62-propiedades-globales)
|
|
21
|
+
- [6.3 Configuración de Assets (Opcional)](#63-configuración-de-assets-opcional)
|
|
22
|
+
- [6.4 Helpers y grid](#64-helpers-y-grid)
|
|
23
|
+
- [6.5 Ratios de Aspecto](#65-ratios-de-aspecto)
|
|
24
|
+
- [6.6 Tipografías](#66-tipografías)
|
|
25
|
+
- [7. CLI y argumentos](#7-cli-y-argumentos)
|
|
26
|
+
- [8. Guía HTML interactiva](#8-guía-html-interactiva)
|
|
27
|
+
- [9. Gestión de variables históricas](#9-gestión-de-variables-históricas)
|
|
28
|
+
- [10. Tema Dutti y demos](#10-tema-dutti-y-demos)
|
|
29
|
+
- [Flujo de desarrollo de temas](#flujo-de-desarrollo-de-temas)
|
|
30
|
+
- [11. Arquitectura del sistema](#11-arquitectura-del-sistema)
|
|
31
|
+
- [Módulos principales](#módulos-principales)
|
|
32
|
+
- [**`BuildOrchestrator`** (`src/build/build-orchestrator.js`)](#buildorchestrator-srcbuildbuild-orchestratorjs)
|
|
33
|
+
- [**`AssetManager`** (`src/build/asset-manager.js`)](#assetmanager-srcbuildasset-managerjs)
|
|
34
|
+
- [**`ThemeTransformer`** (`src/build/theme-transformer.js`)](#themetransformer-srcbuildtheme-transformerjs)
|
|
35
|
+
- [Ventajas de la arquitectura](#ventajas-de-la-arquitectura)
|
|
36
|
+
- [Diagrama de flujo](#diagrama-de-flujo)
|
|
37
|
+
- [12. Tests y calidad](#12-tests-y-calidad)
|
|
38
|
+
- [Suite de tests completa](#suite-de-tests-completa)
|
|
39
|
+
- [13. Documentos complementarios](#13-documentos-complementarios)
|
|
40
|
+
- [Publicación de la guía](#publicación-de-la-guía)
|
|
41
|
+
- [14. Recursos y soporte](#14-recursos-y-soporte)
|
|
42
|
+
- [Contribuir](#contribuir)
|
|
43
|
+
- [15. Licencia](#15-licencia)
|
|
44
|
+
- [Changelog](#changelog)
|
|
45
|
+
- [v1.0.12 - Diciembre 2024](#v1012---diciembre-2024)
|
|
25
46
|
|
|
26
47
|
---
|
|
27
48
|
|
|
28
49
|
## 1. Instalación
|
|
50
|
+
|
|
29
51
|
```bash
|
|
30
52
|
# Instalación global
|
|
31
53
|
npm install -g holygrail5
|
|
@@ -35,7 +57,10 @@ npm install holygrail5 --save-dev
|
|
|
35
57
|
```
|
|
36
58
|
> Requiere Node.js >= 12 (probado hasta v20).
|
|
37
59
|
|
|
60
|
+
---
|
|
61
|
+
|
|
38
62
|
## 2. Flujo rápido
|
|
63
|
+
|
|
39
64
|
```bash
|
|
40
65
|
# 1) Genera CSS + guía
|
|
41
66
|
npx holygrail5
|
|
@@ -48,28 +73,113 @@ npm run serve
|
|
|
48
73
|
npm run watch # regenera al guardar config.json
|
|
49
74
|
npm run dev # watch + servidor
|
|
50
75
|
|
|
51
|
-
# 4)
|
|
52
|
-
npm run build #
|
|
76
|
+
# 4) Genera CSS y tema Dutti
|
|
77
|
+
npm run build # genera CSS, HTML, assets y temas automáticamente
|
|
53
78
|
```
|
|
54
79
|
|
|
80
|
+
---
|
|
81
|
+
|
|
55
82
|
## 3. Scripts disponibles
|
|
83
|
+
|
|
56
84
|
| Script | Descripción |
|
|
57
85
|
| ------ | ----------- |
|
|
58
|
-
| `npm run build` |
|
|
59
|
-
| `npm run watch` | Observa `config.json
|
|
86
|
+
| `npm run build` | Genera CSS, HTML, assets y transforma temas automáticamente usando `BuildOrchestrator`. |
|
|
87
|
+
| `npm run watch` | Observa `config.json`, CSS y temas, regenerando automáticamente al detectar cambios. |
|
|
60
88
|
| `npm run serve` | Abre el navegador y sirve `dist/` en el puerto 3000. |
|
|
61
|
-
| `npm run dev` | Alias práctico: `watch` + `serve
|
|
62
|
-
| `npm run test` |
|
|
89
|
+
| `npm run dev` | Alias práctico: `watch` + `serve` (desarrollo en caliente). |
|
|
90
|
+
| `npm run test` | Ejecuta todos los tests (20 tests unitarios). |
|
|
63
91
|
| `npm run vars:report` | Informe completo de variables CSS. |
|
|
64
92
|
| `npm run vars:remove-unused` | Limpia variables históricas no usadas. |
|
|
65
93
|
|
|
94
|
+
---
|
|
95
|
+
|
|
66
96
|
## 4. ¿Qué se genera?
|
|
67
|
-
- `dist/output.css` → Reset, variables compartidas, helpers de spacing, helpers de layout, grid opcional y tipografías mobile/desktop.
|
|
68
|
-
- `dist/index.html` → Guía interactiva con navegación sticky, buscador y diffs visuales.
|
|
69
|
-
- `dist/themes/dutti.css` + `dist/themes/dutti-demo.html` cuando `theme.enabled` es `true` (ver [Tema Dutti](#9-tema-dutti-y-demos)).
|
|
70
97
|
|
|
71
|
-
|
|
72
|
-
|
|
98
|
+
- **`dist/output.css`** → Reset, variables compartidas, helpers de spacing, helpers de layout, grid opcional, aspect ratios y tipografías mobile/desktop.
|
|
99
|
+
- **`dist/index.html`** → Guía interactiva con navegación sticky, buscador y diffs visuales.
|
|
100
|
+
- **`dist/guide-styles.css`** → Estilos de la guía de documentación.
|
|
101
|
+
- **`dist/assets/`** → Imágenes y recursos estáticos.
|
|
102
|
+
- **`dist/themes/dutti.css`** + **`dist/themes/dutti-demo.html`** → Cuando `theme.enabled` es `true`.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## 5. Estructura del proyecto
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
holygrail5/
|
|
110
|
+
├── config.json # Configuración principal
|
|
111
|
+
├── generate-css.js # Entry point del build
|
|
112
|
+
├── package.json # Dependencias y scripts
|
|
113
|
+
│
|
|
114
|
+
├── src/
|
|
115
|
+
│ ├── assets/ # Assets estáticos (imágenes)
|
|
116
|
+
│ │ ├── intro.jpg
|
|
117
|
+
│ │ ├── introm.jpg
|
|
118
|
+
│ │ └── margenes.webp
|
|
119
|
+
│ │
|
|
120
|
+
│ ├── build/ # Sistema de build modular
|
|
121
|
+
│ │ ├── asset-manager.js # Gestión de assets
|
|
122
|
+
│ │ ├── build-orchestrator.js # Orquestador principal
|
|
123
|
+
│ │ └── theme-transformer.js # Transformación de temas
|
|
124
|
+
│ │
|
|
125
|
+
│ ├── generators/ # Generadores de CSS
|
|
126
|
+
│ │ ├── grid-generator.js
|
|
127
|
+
│ │ ├── helpers-generator.js
|
|
128
|
+
│ │ ├── reset-generator.js
|
|
129
|
+
│ │ ├── spacing-generator.js
|
|
130
|
+
│ │ ├── typo-generator.js
|
|
131
|
+
│ │ ├── utils.js
|
|
132
|
+
│ │ └── variables-generator.js
|
|
133
|
+
│ │
|
|
134
|
+
│ ├── docs-generator/ # Generación de documentación
|
|
135
|
+
│ │ ├── guide-styles.css
|
|
136
|
+
│ │ ├── html-generator.js
|
|
137
|
+
│ │ ├── variables-cli.js
|
|
138
|
+
│ │ └── variables-tracker.js
|
|
139
|
+
│ │
|
|
140
|
+
│ ├── config-loader.js # Carga y validación de config
|
|
141
|
+
│ ├── css-generator.js # Generador CSS principal
|
|
142
|
+
│ ├── dev-server.js # Servidor de desarrollo
|
|
143
|
+
│ └── watch-config.js # Sistema de watch
|
|
144
|
+
│
|
|
145
|
+
├── themes/
|
|
146
|
+
│ └── dutti/ # Tema de ejemplo
|
|
147
|
+
│ ├── _variables.css
|
|
148
|
+
│ ├── _buttons.css
|
|
149
|
+
│ ├── _inputs.css
|
|
150
|
+
│ ├── demo.html
|
|
151
|
+
│ └── theme.css
|
|
152
|
+
│
|
|
153
|
+
├── tests/ # Tests unitarios
|
|
154
|
+
│ ├── asset-manager.test.js
|
|
155
|
+
│ ├── build-orchestrator.test.js
|
|
156
|
+
│ ├── theme-transformer.test.js
|
|
157
|
+
│ ├── config-loader.test.js
|
|
158
|
+
│ ├── css-generator.test.js
|
|
159
|
+
│ ├── helpers.test.js
|
|
160
|
+
│ ├── html-generator.test.js
|
|
161
|
+
│ └── run-all.js
|
|
162
|
+
│
|
|
163
|
+
├── docs/ # Documentación complementaria
|
|
164
|
+
│ ├── ANALISIS-ARQUITECTURA.md
|
|
165
|
+
│ ├── CHANGELOG-MEJORAS.md
|
|
166
|
+
│ ├── GUIA-USO-OTRO-PROYECTO.md
|
|
167
|
+
│ └── SUPERPROMPT.md
|
|
168
|
+
│
|
|
169
|
+
└── dist/ # Archivos generados (gitignored)
|
|
170
|
+
├── output.css
|
|
171
|
+
├── index.html
|
|
172
|
+
├── guide-styles.css
|
|
173
|
+
├── assets/ # Assets copiados
|
|
174
|
+
└── themes/ # Temas generados
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## 6. Configurar `config.json`
|
|
180
|
+
|
|
181
|
+
### 6.1 Ejemplo mínimo
|
|
182
|
+
|
|
73
183
|
```jsonc
|
|
74
184
|
{
|
|
75
185
|
"prefix": "hg",
|
|
@@ -86,6 +196,10 @@ npm run build # corre generate-css.js + copy-theme-html.js
|
|
|
86
196
|
"display": { "property": "display", "class": "d", "responsive": true, "values": ["flex", "block", "none"] }
|
|
87
197
|
},
|
|
88
198
|
"grid": { "enabled": true, "gutter": "8px", "breakpoints": { "md": { "minWidth": "992px", "columns": 12 } } },
|
|
199
|
+
"aspectRatios": [
|
|
200
|
+
{ "class": "aspect-16-9", "width": 16, "height": 9, "description": "Ratio 16:9 (widescreen)" },
|
|
201
|
+
{ "class": "aspect-1-1", "width": 1, "height": 1, "description": "Ratio 1:1 (cuadrado)" }
|
|
202
|
+
],
|
|
89
203
|
"typo": {
|
|
90
204
|
"h2": {
|
|
91
205
|
"fontFamily": "arial, sans-serif",
|
|
@@ -97,7 +211,8 @@ npm run build # corre generate-css.js + copy-theme-html.js
|
|
|
97
211
|
}
|
|
98
212
|
```
|
|
99
213
|
|
|
100
|
-
###
|
|
214
|
+
### 6.2 Propiedades globales
|
|
215
|
+
|
|
101
216
|
| Campo | Tipo | Descripción |
|
|
102
217
|
| ----- | ---- | ----------- |
|
|
103
218
|
| `prefix` | string | Prefijo usado en todas las variables (`--hg-color-*`). |
|
|
@@ -109,20 +224,72 @@ npm run build # corre generate-css.js + copy-theme-html.js
|
|
|
109
224
|
| `spacingImportant` | string[] | Keys de spacing con `!important`. |
|
|
110
225
|
| `helpers` | object | Helpers de layout. Permite arrays simples o mapas clave → valor. |
|
|
111
226
|
| `grid` | object | Define breakpoints, columnas y gutter por tamaño. |
|
|
227
|
+
| `aspectRatios` | array | **Opcional**: Define ratios de aspecto como `.hg-aspect-16-9` con fallback automático. |
|
|
112
228
|
| `typo` | object | Clases de tipografía (obligatorio al menos un breakpoint). |
|
|
113
229
|
| `theme` | object | `{ name, enabled }` para combinar temas desde `themes/<name>`. |
|
|
230
|
+
| `assets` | object | **Opcional**: `{ css: [...], images: [...] }` para configurar qué archivos copiar a `dist/`. |
|
|
231
|
+
|
|
232
|
+
### 6.3 Configuración de Assets (Opcional)
|
|
233
|
+
|
|
234
|
+
Puedes configurar qué archivos CSS e imágenes se copian a `dist/` agregando una sección `assets` en tu `config.json`:
|
|
235
|
+
|
|
236
|
+
```json
|
|
237
|
+
{
|
|
238
|
+
"assets": {
|
|
239
|
+
"css": [
|
|
240
|
+
{
|
|
241
|
+
"source": "src/docs-generator/guide-styles.css",
|
|
242
|
+
"dest": "dist/guide-styles.css"
|
|
243
|
+
}
|
|
244
|
+
],
|
|
245
|
+
"images": [
|
|
246
|
+
{
|
|
247
|
+
"source": "src/assets/intro.jpg",
|
|
248
|
+
"dest": "dist/assets/intro.jpg"
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
"source": "src/assets/margenes.webp",
|
|
252
|
+
"dest": "dist/assets/margen.webp"
|
|
253
|
+
}
|
|
254
|
+
]
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
**Ventajas:**
|
|
260
|
+
- ✅ Configuración sin modificar código
|
|
261
|
+
- ✅ Fácil agregar nuevos assets
|
|
262
|
+
- ✅ Flexible para diferentes proyectos
|
|
263
|
+
|
|
264
|
+
Si no se especifica `assets`, el sistema usa una configuración por defecto.
|
|
265
|
+
|
|
266
|
+
### 6.4 Helpers y grid
|
|
114
267
|
|
|
115
|
-
### 5.3 Helpers y grid
|
|
116
268
|
- `src/generators/helpers-generator.js` crea clases del tipo `.hg-d-flex`, `.md\:hg-justify-center`, `.hg-gap-16`, etc.
|
|
117
269
|
- Puedes mezclar helpers basados en `values` y helpers que reutilizan `spacingMap` con `useSpacing: true` (gap, row-gap, column-gap...).
|
|
118
270
|
- El grid (`grid.enabled=true`) genera utilidades `.row`, `.col-md-6`, offsets, contenedores fluidos y variantes por breakpoint.
|
|
119
271
|
|
|
120
|
-
### 5
|
|
272
|
+
### 6.5 Ratios de Aspecto
|
|
273
|
+
|
|
274
|
+
- `src/generators/ratio-generator.js` crea clases de aspect ratio como `.hg-aspect`, `.hg-aspect-16-9`, `.hg-aspect-1-1`, etc.
|
|
275
|
+
- La clase `.hg-aspect` sin sufijo usa el ratio 2:3 por defecto.
|
|
276
|
+
- Usa la propiedad CSS `aspect-ratio` nativa con fallback automático para navegadores antiguos (padding-top).
|
|
277
|
+
- Incluye `.hg-aspect-image` para imágenes/videos con `object-fit: cover`.
|
|
278
|
+
- Incluye `.hg-aspect-content` para posicionar contenido personalizado absolutamente dentro del ratio.
|
|
279
|
+
- Cada ratio se define con `class`, `width`, `height` y `description`.
|
|
280
|
+
- Útil para mantener proporciones consistentes en imágenes, videos y contenedores.
|
|
281
|
+
- Incluye ratios comunes (1:1, 4:3, 16:9) y especializados (separadores 3:1, 7:1, 12:1, 24:1).
|
|
282
|
+
|
|
283
|
+
### 6.6 Tipografías
|
|
284
|
+
|
|
121
285
|
- El generador (`src/generators/typo-generator.js`) deduplica valores y crea variables compartidas (`--hg-typo-font-size-24`).
|
|
122
286
|
- Cada clase admite propiedades base (`fontFamily`, `fontWeight`, `letterSpacing`, `textTransform`) y propiedades por breakpoint (`fontSize`, `lineHeight`).
|
|
123
287
|
- Los valores px se convierten automáticamente a rem respetando `baseFontSize`.
|
|
124
288
|
|
|
125
|
-
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## 7. CLI y argumentos
|
|
292
|
+
|
|
126
293
|
`generate-css.js` puede ejecutarse como binario (`holygrail5`) o mediante `node generate-css.js`.
|
|
127
294
|
|
|
128
295
|
Argumentos soportados:
|
|
@@ -135,14 +302,21 @@ npx holygrail5 \
|
|
|
135
302
|
- Todos los parámetros son opcionales. Si omites alguno, se usan las rutas por defecto (`config.json` y `dist/*`).
|
|
136
303
|
- El script ajusta automáticamente el `href="output.css"` del HTML si CSS y HTML viven en carpetas distintas.
|
|
137
304
|
|
|
138
|
-
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
## 8. Guía HTML interactiva
|
|
308
|
+
|
|
139
309
|
El módulo `src/docs-generator/html-generator.js` produce `dist/index.html` con:
|
|
140
|
-
- Resumen visual de colores, tipografías y spacing
|
|
141
|
-
- Detección de cambios: los valores modificados respecto a `.data/.previous-values.json` se resaltan
|
|
142
|
-
- Buscador instantáneo y navegación lateral fija
|
|
143
|
-
- Información de metadata (versión del paquete y último commit disponible)
|
|
310
|
+
- ✅ Resumen visual de colores, tipografías y spacing
|
|
311
|
+
- ✅ Detección de cambios: los valores modificados respecto a `.data/.previous-values.json` se resaltan
|
|
312
|
+
- ✅ Buscador instantáneo y navegación lateral fija
|
|
313
|
+
- ✅ Información de metadata (versión del paquete y último commit disponible)
|
|
314
|
+
- ✅ Diseño responsive con smooth scroll (Lenis)
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
## 9. Gestión de variables históricas
|
|
144
319
|
|
|
145
|
-
## 8. Gestión de variables históricas
|
|
146
320
|
El binario `src/docs-generator/variables-cli.js` + el módulo `variables-tracker` guardan un historial en `.data/.historical-variables.json` para que ninguna variable desaparezca sin que lo decidas.
|
|
147
321
|
|
|
148
322
|
Comandos útiles:
|
|
@@ -154,35 +328,165 @@ node src/docs-generator/variables-cli.js remove -- --hg-typo-font-size-18
|
|
|
154
328
|
```
|
|
155
329
|
> Después de borrar variables históricas conviene volver a ejecutar `npm run build` para regenerar el CSS sin referencias huérfanas.
|
|
156
330
|
|
|
157
|
-
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## 10. Tema Dutti y demos
|
|
334
|
+
|
|
158
335
|
- El directorio `themes/dutti/` contiene CSS modular (_variables, _buttons, etc.) y un `demo.html` de referencia.
|
|
159
|
-
- `
|
|
336
|
+
- El `ThemeTransformer` combina el tema en `dist/themes/dutti.css`, transforma el HTML agregando sidebar, header y scripts de Lenis automáticamente.
|
|
160
337
|
- Para crear tu propio tema copia la carpeta `themes/dutti`, ajusta los ficheros y actualiza `config.json → theme.name`.
|
|
161
338
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
339
|
+
### Flujo de desarrollo de temas
|
|
340
|
+
|
|
341
|
+
1. `npm run watch` detecta cambios en `themes/dutti/` automáticamente
|
|
342
|
+
2. Los cambios en `demo.html` o archivos CSS se procesan al guardar
|
|
343
|
+
3. El resultado se genera en `dist/themes/dutti-demo.html`
|
|
344
|
+
4. El servidor de desarrollo (`npm run serve`) sirve los cambios en tiempo real
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## 11. Arquitectura del sistema
|
|
349
|
+
|
|
350
|
+
HolyGrail5 usa una arquitectura modular y centralizada construida en diciembre 2024:
|
|
351
|
+
|
|
352
|
+
### Módulos principales
|
|
353
|
+
|
|
354
|
+
#### **`BuildOrchestrator`** (`src/build/build-orchestrator.js`)
|
|
355
|
+
- Coordina todo el proceso de build de forma centralizada
|
|
356
|
+
- Genera CSS, HTML, copia assets y transforma temas
|
|
357
|
+
- Soporta modo watch con cache busting automático
|
|
358
|
+
- ~175 líneas, 100% testeado
|
|
359
|
+
|
|
360
|
+
#### **`AssetManager`** (`src/build/asset-manager.js`)
|
|
361
|
+
- Gestiona la copia de CSS e imágenes a `dist/`
|
|
362
|
+
- Configuración centralizada desde `config.json` o fallback
|
|
363
|
+
- API simple: `copyCSS()`, `copyImages()`, `copyAssets()`
|
|
364
|
+
- Soporte para agregar assets dinámicamente
|
|
365
|
+
- ~153 líneas, 10 tests
|
|
366
|
+
|
|
367
|
+
#### **`ThemeTransformer`** (`src/build/theme-transformer.js`)
|
|
368
|
+
- Transforma HTML de temas agregando sidebar, header y scripts
|
|
369
|
+
- Inyecta Lenis para scroll suave y navegación
|
|
370
|
+
- Manejo dinámico de múltiples temas
|
|
371
|
+
- ~234 líneas, 5 tests
|
|
372
|
+
|
|
373
|
+
### Ventajas de la arquitectura
|
|
374
|
+
|
|
375
|
+
- ✅ **Sin duplicación de código** (~150 líneas eliminadas)
|
|
376
|
+
- ✅ **Consistencia** entre build y watch
|
|
377
|
+
- ✅ **Testeable** (20 tests unitarios, 100% pasando)
|
|
378
|
+
- ✅ **Mantenible** (responsabilidades claramente separadas)
|
|
379
|
+
- ✅ **Extensible** (fácil agregar nuevas funcionalidades)
|
|
380
|
+
|
|
381
|
+
### Diagrama de flujo
|
|
382
|
+
|
|
383
|
+
```
|
|
384
|
+
generate-css.js
|
|
385
|
+
↓
|
|
386
|
+
BuildOrchestrator
|
|
387
|
+
├── config-loader.js → Carga config.json
|
|
388
|
+
├── css-generator.js → Genera CSS
|
|
389
|
+
├── html-generator.js → Genera HTML
|
|
390
|
+
├── AssetManager → Copia assets
|
|
391
|
+
└── ThemeTransformer → Transforma temas
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
---
|
|
395
|
+
|
|
396
|
+
## 12. Tests y calidad
|
|
397
|
+
|
|
398
|
+
### Suite de tests completa
|
|
399
|
+
|
|
400
|
+
```bash
|
|
401
|
+
npm test # Ejecuta todos los tests
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
**Tests disponibles:**
|
|
405
|
+
- ✅ `config-loader.test.js` - Validación de configuración
|
|
406
|
+
- ✅ `css-generator.test.js` - Generación de CSS
|
|
407
|
+
- ✅ `helpers.test.js` - Utilidades compartidas
|
|
408
|
+
- ✅ `html-generator.test.js` - Generación de HTML
|
|
409
|
+
- ✅ `asset-manager.test.js` - Gestión de assets (10 tests)
|
|
410
|
+
- ✅ `theme-transformer.test.js` - Transformación de temas (5 tests)
|
|
411
|
+
- ✅ `build-orchestrator.test.js` - Orquestador de build (5 tests)
|
|
412
|
+
|
|
413
|
+
**Resultados:**
|
|
414
|
+
```
|
|
415
|
+
📊 Resumen Total de Tests de Build:
|
|
416
|
+
✅ Pasados: 20
|
|
417
|
+
❌ Fallidos: 0
|
|
418
|
+
📈 Total: 20
|
|
419
|
+
```
|
|
167
420
|
|
|
168
|
-
|
|
169
|
-
-
|
|
170
|
-
-
|
|
171
|
-
-
|
|
421
|
+
Los tests:
|
|
422
|
+
- Imprimen resultados en consola sin necesidad de frameworks pesados
|
|
423
|
+
- Funciones puras fáciles de testear en aislamiento
|
|
424
|
+
- Cobertura completa del sistema de build
|
|
425
|
+
- Se ejecutan en menos de 1 segundo
|
|
426
|
+
|
|
427
|
+
---
|
|
428
|
+
|
|
429
|
+
## 13. Documentos complementarios
|
|
172
430
|
|
|
173
|
-
## 12. Documentos complementarios
|
|
174
431
|
| Archivo | Contenido |
|
|
175
432
|
| ------- | --------- |
|
|
176
433
|
| `docs/SUPERPROMPT.md` | Prompt detallado para asistentes/IA que necesiten generar HTML usando HolyGrail5. |
|
|
177
|
-
| `docs/COMPARACION.md` | Comparativa HolyGrail5 vs alternativas (Tailwind, frameworks legacy, etc.). |
|
|
178
434
|
| `docs/GUIA-USO-OTRO-PROYECTO.md` | Pasos para integrar HolyGrail5 en proyectos existentes. |
|
|
179
|
-
| `docs
|
|
435
|
+
| `docs/ANALISIS-ARQUITECTURA.md` | Análisis completo de la arquitectura y problemas resueltos. |
|
|
436
|
+
| `docs/CHANGELOG-MEJORAS.md` | Registro detallado de la refactorización de diciembre 2024. |
|
|
437
|
+
|
|
438
|
+
### Publicación de la guía
|
|
439
|
+
|
|
440
|
+
Puedes publicar `dist/index.html` como documentación estática en:
|
|
441
|
+
- GitHub Pages
|
|
442
|
+
- Netlify (configurado en `netlify.toml`)
|
|
443
|
+
- Vercel
|
|
444
|
+
- Cualquier hosting estático
|
|
445
|
+
|
|
446
|
+
```bash
|
|
447
|
+
npm run build
|
|
448
|
+
# Publica el contenido de dist/ en tu hosting
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
---
|
|
452
|
+
|
|
453
|
+
## 14. Recursos y soporte
|
|
454
|
+
|
|
455
|
+
- **Repositorio**: [github.com/holygrailcss/holygrail5](https://github.com/holygrailcss/holygrail5)
|
|
456
|
+
- **npm**: [holygrail5](https://www.npmjs.com/package/holygrail5)
|
|
457
|
+
- **Issues y PRs**: Bienvenidos. Sigue el flujo clásico: fork → rama → PR
|
|
458
|
+
- **Documentación**: Ver `docs/` para guías detalladas
|
|
459
|
+
|
|
460
|
+
### Contribuir
|
|
461
|
+
|
|
462
|
+
1. Fork el proyecto
|
|
463
|
+
2. Crea tu rama de feature (`git checkout -b feature/AmazingFeature`)
|
|
464
|
+
3. Commit tus cambios (`git commit -m 'feat: agregar AmazingFeature'`)
|
|
465
|
+
4. Push a la rama (`git push origin feature/AmazingFeature`)
|
|
466
|
+
5. Abre un Pull Request
|
|
467
|
+
|
|
468
|
+
---
|
|
469
|
+
|
|
470
|
+
## 15. Licencia
|
|
471
|
+
|
|
472
|
+
MIT © HolyGrail CSS
|
|
473
|
+
|
|
474
|
+
Usa, adapta y comparte libremente mientras conserves la atribución.
|
|
475
|
+
|
|
476
|
+
---
|
|
477
|
+
|
|
478
|
+
## Changelog
|
|
479
|
+
|
|
480
|
+
### v1.0.12 - Diciembre 2024
|
|
481
|
+
|
|
482
|
+
**🎉 Refactorización arquitectural completa**
|
|
180
483
|
|
|
181
|
-
|
|
182
|
-
-
|
|
183
|
-
-
|
|
184
|
-
-
|
|
185
|
-
-
|
|
484
|
+
- ✅ Nueva arquitectura modular con `BuildOrchestrator`, `AssetManager` y `ThemeTransformer`
|
|
485
|
+
- ✅ Eliminadas ~150 líneas de código duplicado
|
|
486
|
+
- ✅ Assets organizados en `src/assets/` y `dist/assets/`
|
|
487
|
+
- ✅ Configuración de assets desde `config.json`
|
|
488
|
+
- ✅ 20 tests unitarios agregados (100% pasando)
|
|
489
|
+
- ✅ Sistema de watch mejorado
|
|
490
|
+
- ✅ Documentación actualizada
|
|
186
491
|
|
|
187
|
-
|
|
188
|
-
MIT © HolyGrail CSS. Usa, adapta y comparte libremente mientras conserves la atribución.
|
|
492
|
+
Ver `docs/CHANGELOG-MEJORAS.md` para detalles completos.
|