versacompiler 2.4.1 → 2.6.0
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 +722 -722
- package/dist/compiler/compile-worker-pool.js +108 -0
- package/dist/compiler/compile-worker-thread.cjs +72 -0
- package/dist/compiler/compile.js +177 -18
- package/dist/compiler/error-reporter.js +12 -0
- package/dist/compiler/integrity-validator.js +13 -1
- package/dist/compiler/linter.js +12 -0
- package/dist/compiler/minify.js +12 -0
- package/dist/compiler/minifyTemplate.js +12 -0
- package/dist/compiler/module-resolution-optimizer.js +35 -20
- package/dist/compiler/parser.js +12 -0
- package/dist/compiler/performance-monitor.js +73 -61
- package/dist/compiler/pipeline/build-pipeline.js +139 -0
- package/dist/compiler/pipeline/core-plugins.js +230 -0
- package/dist/compiler/pipeline/module-graph.js +75 -0
- package/dist/compiler/pipeline/plugin-driver.js +99 -0
- package/dist/compiler/pipeline/types.js +14 -0
- package/dist/compiler/tailwindcss.js +12 -0
- package/dist/compiler/transform-optimizer.js +12 -0
- package/dist/compiler/transformTStoJS.js +38 -5
- package/dist/compiler/transforms.js +234 -16
- package/dist/compiler/typescript-compiler.js +12 -0
- package/dist/compiler/typescript-error-parser.js +12 -0
- package/dist/compiler/typescript-manager.js +15 -1
- package/dist/compiler/typescript-sync-validator.js +45 -31
- package/dist/compiler/typescript-worker-pool.js +12 -0
- package/dist/compiler/typescript-worker-thread.cjs +482 -475
- package/dist/compiler/typescript-worker.js +12 -0
- package/dist/compiler/vuejs.js +73 -47
- package/dist/config.js +14 -0
- package/dist/hrm/VueHRM.js +484 -359
- package/dist/hrm/errorScreen.js +95 -83
- package/dist/hrm/getInstanciaVue.js +325 -313
- package/dist/hrm/initHRM.js +736 -586
- package/dist/hrm/versaHMR.js +317 -0
- package/dist/main.js +23 -3
- package/dist/servicios/browserSync.js +127 -6
- package/dist/servicios/file-watcher.js +139 -8
- package/dist/servicios/logger.js +12 -0
- package/dist/servicios/readConfig.js +141 -54
- package/dist/servicios/versacompile.config.types.js +14 -0
- package/dist/utils/excluded-modules.js +12 -0
- package/dist/utils/module-resolver.js +86 -40
- package/dist/utils/promptUser.js +12 -0
- package/dist/utils/proxyValidator.js +12 -0
- package/dist/utils/resolve-bin.js +12 -0
- package/dist/utils/utils.js +12 -0
- package/dist/utils/vue-types-setup.js +260 -248
- package/dist/wrappers/eslint-node.js +15 -1
- package/dist/wrappers/oxlint-node.js +15 -1
- package/dist/wrappers/tailwind-node.js +12 -0
- package/package.json +74 -54
package/README.md
CHANGED
|
@@ -1,722 +1,722 @@
|
|
|
1
|
-
# 🚀 VersaCompiler
|
|
2
|
-
|
|
3
|
-
[](https://opensource.org/licenses/MIT)
|
|
4
|
-
[](https://www.typescriptlang.org/)
|
|
5
|
-
[](https://vuejs.org/)
|
|
6
|
-
|
|
7
|
-
> **🎯 Compilador rápido y eficiente para Vue.js, TypeScript y JavaScript con Hot Module Replacement (HMR) integrado.**
|
|
8
|
-
|
|
9
|
-
**VersaCompiler** es una herramienta de compilación diseñada para proyectos Vue 3 con soporte completo para TypeScript, JavaScript y todas las funcionalidades modernas que necesitas para desarrollo web.
|
|
10
|
-
|
|
11
|
-
## 🌟 Características Principales
|
|
12
|
-
|
|
13
|
-
- ⚡ **Compilación ultra-rápida** - Workers paralelos y cache inteligente
|
|
14
|
-
- 🔥 **HMR Automático (como Vite)** - Detección inteligente sin configuración manual, igual que Vite y esbuild
|
|
15
|
-
- 🧩 **Soporte completo para Vue 3** - SFC, Composition API, script setup
|
|
16
|
-
- 📝 **TypeScript avanzado** - Language Service, decorators, validación de tipos
|
|
17
|
-
- 🔍 **Sistema de linting dual** - ESLint + OxLint con auto-fix
|
|
18
|
-
- 🎨 **TailwindCSS integrado** - Compilación automática y optimizada
|
|
19
|
-
- 🗜️ **Minificación de última generación** - OxcMinify para builds ultra-optimizados
|
|
20
|
-
- 🛡️ **Validación de integridad** - Sistema de 4 niveles que detecta código corrupto, exports eliminados y errores de sintaxis en builds
|
|
21
|
-
- �📦 **Bundling inteligente** - Agrupación configurable de módulos (EN DESARROLLO)
|
|
22
|
-
- 🛠️ **Compilación por archivo** - Granular control de compilación
|
|
23
|
-
- 🧹 **Gestión de caché avanzada** - Cache automático con invalidación inteligente
|
|
24
|
-
|
|
25
|
-
## ⚡ Instalación
|
|
26
|
-
|
|
27
|
-
### 📦 Desde código fuente
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
git clone https://github.com/kriollo/versaCompiler.git
|
|
31
|
-
cd versaCompiler
|
|
32
|
-
npm install
|
|
33
|
-
npm run build
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
### 🔗 Instalación local en tu proyecto
|
|
37
|
-
|
|
38
|
-
```bash
|
|
39
|
-
# Copiar archivos compilados a tu proyecto
|
|
40
|
-
cp -r dist/* tu-proyecto/versacompiler/
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## 🎯 Quick Start
|
|
44
|
-
|
|
45
|
-
### 1. Configuración inicial
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
# Crear archivo de configuración
|
|
49
|
-
versacompiler --init
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
### 2. Estructura de proyecto
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
-
mi-proyecto/
|
|
56
|
-
├── src/ # 📝 Código fuente
|
|
57
|
-
│ ├── components/ # 🧩 Componentes Vue
|
|
58
|
-
│ └── main.ts # 🚀 Punto de entrada
|
|
59
|
-
├── dist/ # 📦 Archivos compilados (auto-generado)
|
|
60
|
-
├── versacompile.config.ts # ⚙️ Configuración
|
|
61
|
-
└── package.json
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
### 3. Comandos básicos
|
|
65
|
-
|
|
66
|
-
```bash
|
|
67
|
-
# 🔥 Desarrollo con auto-reload y HMR
|
|
68
|
-
versacompiler --watch
|
|
69
|
-
|
|
70
|
-
# 🔥 Desarrollo con análisis detallado
|
|
71
|
-
versacompiler --watch --verbose
|
|
72
|
-
|
|
73
|
-
# 🏗️ Compilar todo el proyecto
|
|
74
|
-
versacompiler --all
|
|
75
|
-
|
|
76
|
-
# 📄 Compilar archivo específico
|
|
77
|
-
versacompiler --file src/components/MyComponent.vue
|
|
78
|
-
|
|
79
|
-
# 📝 Compilar múltiples archivos específicos
|
|
80
|
-
versacompiler src/main.ts src/components/App.vue
|
|
81
|
-
|
|
82
|
-
# 🚀 Build para producción (minificado)
|
|
83
|
-
versacompiler --all --prod
|
|
84
|
-
|
|
85
|
-
# 🛡️ Build con validación de integridad (recomendado para deploy)
|
|
86
|
-
versacompiler --all --prod --checkIntegrity
|
|
87
|
-
|
|
88
|
-
# 🧹 Limpiar y recompilar todo
|
|
89
|
-
versacompiler --all --cleanOutput --cleanCache
|
|
90
|
-
|
|
91
|
-
# 🔍 Solo verificar código (linting)
|
|
92
|
-
versacompiler --linter
|
|
93
|
-
|
|
94
|
-
# 🎨 Solo compilar TailwindCSS
|
|
95
|
-
versacompiler --tailwind
|
|
96
|
-
|
|
97
|
-
# ⚡ Compilación rápida con confirmación automática
|
|
98
|
-
versacompiler --all --prod --yes
|
|
99
|
-
|
|
100
|
-
# 🔬 Verificación de tipos específica
|
|
101
|
-
versacompiler --typeCheck --file src/types.ts
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
## 📖 Configuración
|
|
105
|
-
|
|
106
|
-
### 🛠️ Comandos CLI Disponibles
|
|
107
|
-
|
|
108
|
-
| Comando | Alias | Descripción |
|
|
109
|
-
| ------------------ | ----- | ------------------------------------------------ |
|
|
110
|
-
| `--init` | | Inicializar configuración del proyecto |
|
|
111
|
-
| `--watch` | `-w` | Modo observación con HMR y auto-recompilación |
|
|
112
|
-
| `--all` | | Compilar todos los archivos del proyecto |
|
|
113
|
-
| `--file <archivo>` | `-f` | Compilar un archivo específico |
|
|
114
|
-
| `[archivos...]` | | Compilar múltiples archivos específicos |
|
|
115
|
-
| `--prod` | `-p` | Modo producción con minificación |
|
|
116
|
-
| `--verbose` | `-v` | Mostrar información detallada de compilación |
|
|
117
|
-
| `--cleanOutput` | `-co` | Limpiar directorio de salida antes de compilar |
|
|
118
|
-
| `--cleanCache` | `-cc` | Limpiar caché de compilación |
|
|
119
|
-
| `--yes` | `-y` | Confirmar automáticamente todas las acciones |
|
|
120
|
-
| `--typeCheck` | `-t` | Habilitar/deshabilitar verificación de tipos |
|
|
121
|
-
| `--checkIntegrity` | `-ci` | Validar integridad del código compilado (deploy) |
|
|
122
|
-
| `--tailwind` | | Habilitar/deshabilitar compilación TailwindCSS |
|
|
123
|
-
| `--linter` | | Habilitar/deshabilitar análisis de código |
|
|
124
|
-
| `--help` | `-h` | Mostrar ayuda y opciones disponibles |
|
|
125
|
-
|
|
126
|
-
### 🔧 Archivo de configuración
|
|
127
|
-
|
|
128
|
-
Crea un archivo `versacompile.config.ts` en la raíz de tu proyecto:
|
|
129
|
-
|
|
130
|
-
```typescript
|
|
131
|
-
// Archivo de configuración de VersaCompiler
|
|
132
|
-
export default {
|
|
133
|
-
tsconfig: './tsconfig.json',
|
|
134
|
-
compilerOptions: {
|
|
135
|
-
sourceRoot: './src',
|
|
136
|
-
outDir: './dist',
|
|
137
|
-
pathsAlias: {
|
|
138
|
-
'@/*': ['src/*'],
|
|
139
|
-
'P@/*': ['public/*'],
|
|
140
|
-
},
|
|
141
|
-
},
|
|
142
|
-
proxyConfig: {
|
|
143
|
-
proxyUrl: '',
|
|
144
|
-
assetsOmit: true,
|
|
145
|
-
},
|
|
146
|
-
aditionalWatch: ['./app/templates/**/*.twig'],
|
|
147
|
-
tailwindConfig: {
|
|
148
|
-
bin: './node_modules/.bin/tailwindcss',
|
|
149
|
-
input: './src/css/input.css',
|
|
150
|
-
output: './public/css/output.css',
|
|
151
|
-
},
|
|
152
|
-
linter: [
|
|
153
|
-
{
|
|
154
|
-
name: 'eslint',
|
|
155
|
-
bin: './node_modules/.bin/eslint',
|
|
156
|
-
configFile: './eslint.config.js',
|
|
157
|
-
fix: false,
|
|
158
|
-
paths: ['src/'],
|
|
159
|
-
},
|
|
160
|
-
{
|
|
161
|
-
name: 'oxlint',
|
|
162
|
-
bin: './node_modules/.bin/oxlint',
|
|
163
|
-
configFile: './.oxlintrc.json',
|
|
164
|
-
fix: false,
|
|
165
|
-
paths: ['src/'],
|
|
166
|
-
},
|
|
167
|
-
],
|
|
168
|
-
bundlers: [
|
|
169
|
-
{
|
|
170
|
-
name: 'appLoader',
|
|
171
|
-
fileInput: './public/module/appLoader.js',
|
|
172
|
-
fileOutput: './public/module/appLoader.prod.js',
|
|
173
|
-
},
|
|
174
|
-
],
|
|
175
|
-
};
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
### 📝 Opciones de configuración
|
|
179
|
-
|
|
180
|
-
#### `compilerOptions`
|
|
181
|
-
|
|
182
|
-
- `sourceRoot`: Directorio de archivos fuente (por defecto: `'./src'`)
|
|
183
|
-
- `outDir`: Directorio de salida (por defecto: `'./dist'`)
|
|
184
|
-
- `pathsAlias`: Aliases para imports (ej: `'@/*': ['src/*']`)
|
|
185
|
-
|
|
186
|
-
#### `proxyConfig`
|
|
187
|
-
|
|
188
|
-
- `proxyUrl`: URL del proxy para desarrollo
|
|
189
|
-
- `assetsOmit`: Omitir assets en el proxy
|
|
190
|
-
|
|
191
|
-
#### `tailwindConfig`
|
|
192
|
-
|
|
193
|
-
- `bin`: Ruta al binario de TailwindCSS
|
|
194
|
-
- `input`: Archivo CSS de entrada
|
|
195
|
-
- `output`: Archivo CSS de salida
|
|
196
|
-
|
|
197
|
-
#### `linter`
|
|
198
|
-
|
|
199
|
-
Array de configuraciones de linters avanzadas:
|
|
200
|
-
|
|
201
|
-
- `name`: Nombre del linter (`'eslint'` o `'oxlint'`)
|
|
202
|
-
- `bin`: Ruta al binario del linter
|
|
203
|
-
- `configFile`: Archivo de configuración del linter
|
|
204
|
-
- `fix`: Auto-fix de errores detectados
|
|
205
|
-
- `paths`: Rutas específicas a analizar
|
|
206
|
-
- `eslintConfig`: Configuración específica de ESLint
|
|
207
|
-
- `cache`: Habilitar cache de ESLint
|
|
208
|
-
- `maxWarnings`: Máximo número de warnings
|
|
209
|
-
- `quiet`: Mostrar solo errores
|
|
210
|
-
- `formats`: Formatos de salida (`'json'`, `'stylish'`, `'compact'`)
|
|
211
|
-
- `oxlintConfig`: Configuración específica de OxLint
|
|
212
|
-
- `rules`: Reglas personalizadas
|
|
213
|
-
- `plugins`: Plugins de OxLint
|
|
214
|
-
- `deny`: Reglas a denegar
|
|
215
|
-
- `allow`: Reglas a permitir
|
|
216
|
-
|
|
217
|
-
#### `bundlers`
|
|
218
|
-
|
|
219
|
-
Array de configuraciones de bundling:
|
|
220
|
-
|
|
221
|
-
- `name`: Nombre del bundle
|
|
222
|
-
- `fileInput`: Archivo de entrada
|
|
223
|
-
- `fileOutput`: Archivo de salida
|
|
224
|
-
|
|
225
|
-
## 🎯 Ejemplos de Uso
|
|
226
|
-
|
|
227
|
-
### Desarrollo Local
|
|
228
|
-
|
|
229
|
-
```bash
|
|
230
|
-
# Iniciar servidor de desarrollo con HMR
|
|
231
|
-
versacompiler --watch
|
|
232
|
-
|
|
233
|
-
# Desarrollo con información detallada
|
|
234
|
-
versacompiler --watch --verbose
|
|
235
|
-
|
|
236
|
-
# Compilación específica durante desarrollo
|
|
237
|
-
versacompiler --file src/main.ts
|
|
238
|
-
|
|
239
|
-
# Solo linting durante desarrollo
|
|
240
|
-
versacompiler --linter
|
|
241
|
-
|
|
242
|
-
# Desarrollo con limpieza de caché
|
|
243
|
-
versacompiler --watch --cleanCache
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
### Compilación para Producción
|
|
247
|
-
|
|
248
|
-
```bash
|
|
249
|
-
# Build completo para producción
|
|
250
|
-
versacompiler --all --prod
|
|
251
|
-
|
|
252
|
-
# Build con limpieza previa
|
|
253
|
-
versacompiler --all --prod --cleanOutput --cleanCache
|
|
254
|
-
|
|
255
|
-
# Build silencioso para CI/CD
|
|
256
|
-
versacompiler --all --prod --yes
|
|
257
|
-
|
|
258
|
-
# Build con análisis detallado
|
|
259
|
-
versacompiler --all --prod --verbose
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
### Flujos de Trabajo Específicos
|
|
263
|
-
|
|
264
|
-
```bash
|
|
265
|
-
# Compilar solo archivos modificados
|
|
266
|
-
versacompiler file1.vue file2.ts file3.js
|
|
267
|
-
|
|
268
|
-
# Verificación de tipos específica
|
|
269
|
-
versacompiler --typeCheck --file src/types/api.ts
|
|
270
|
-
|
|
271
|
-
# Solo TailwindCSS
|
|
272
|
-
versacompiler --tailwind
|
|
273
|
-
|
|
274
|
-
# Compilación híbrida (linting + compilación)
|
|
275
|
-
versacompiler --all --linter --typeCheck
|
|
276
|
-
```
|
|
277
|
-
|
|
278
|
-
### Integración CI/CD
|
|
279
|
-
|
|
280
|
-
```bash
|
|
281
|
-
# Pipeline de CI completo
|
|
282
|
-
versacompiler --linter # 1. Verificar código
|
|
283
|
-
versacompiler --typeCheck --all # 2. Verificar tipos
|
|
284
|
-
versacompiler --all --prod --yes # 3. Build para producción
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
## 🧩 Casos de Uso Avanzados
|
|
288
|
-
|
|
289
|
-
### 🎮 Desarrollo de Componentes Vue
|
|
290
|
-
|
|
291
|
-
```bash
|
|
292
|
-
# Compilación específica de componente con hot reload
|
|
293
|
-
versacompiler --watch --file src/components/GameBoard.vue
|
|
294
|
-
|
|
295
|
-
# Desarrollo con validación de tipos estricta
|
|
296
|
-
versacompiler --watch --typeCheck --verbose
|
|
297
|
-
|
|
298
|
-
# Solo compilar estilos para rapid prototyping
|
|
299
|
-
versacompiler --tailwind --file src/styles/components.css
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
### 🏢 Proyectos Enterprise
|
|
303
|
-
|
|
304
|
-
```bash
|
|
305
|
-
# Validación completa antes de commit
|
|
306
|
-
versacompiler --linter --typeCheck --all
|
|
307
|
-
|
|
308
|
-
# Build optimizado para múltiples entornos
|
|
309
|
-
versacompiler --all --prod --cleanOutput --verbose
|
|
310
|
-
|
|
311
|
-
# Análisis de bundle para optimización
|
|
312
|
-
versacompiler --all --prod --verbose | grep "Bundle"
|
|
313
|
-
```
|
|
314
|
-
|
|
315
|
-
### 🧪 Testing y CI/CD
|
|
316
|
-
|
|
317
|
-
```bash
|
|
318
|
-
# Pre-commit hooks
|
|
319
|
-
versacompiler --linter --typeCheck --cleanCache
|
|
320
|
-
|
|
321
|
-
# GitHub Actions / CI Pipeline
|
|
322
|
-
versacompiler --all --prod --yes --verbose
|
|
323
|
-
|
|
324
|
-
# Testing de componentes individuales
|
|
325
|
-
versacompiler --file tests/components/Button.test.ts
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
### 🎨 Design System Development
|
|
329
|
-
|
|
330
|
-
```bash
|
|
331
|
-
# Compilación de componentes de design system
|
|
332
|
-
versacompiler --watch src/design-system/components/
|
|
333
|
-
|
|
334
|
-
# Build de librería de componentes
|
|
335
|
-
versacompiler --all --prod src/design-system/
|
|
336
|
-
|
|
337
|
-
# Validación de tokens de diseño
|
|
338
|
-
versacompiler --tailwind --verbose
|
|
339
|
-
```
|
|
340
|
-
|
|
341
|
-
## 🏗️ Funcionalidades
|
|
342
|
-
|
|
343
|
-
### 🔥 Hot Module Replacement (HMR)
|
|
344
|
-
|
|
345
|
-
- **Componentes Vue**: Actualizaciones instantáneas preservando estado de componentes
|
|
346
|
-
- **TypeScript/JavaScript**: Recarga inteligente de módulos sin perder contexto
|
|
347
|
-
- **CSS/TailwindCSS**: Inyección de estilos en tiempo real
|
|
348
|
-
- **Key-based updates**: Sistema de keys únicos para identificación de componentes
|
|
349
|
-
|
|
350
|
-
### 🚀 Sistema de Compilación Avanzado
|
|
351
|
-
|
|
352
|
-
- **Worker Threads**: Pool de workers TypeScript optimizado para CPU cores
|
|
353
|
-
- **Cache inteligente**: Sistema de cache por archivos con invalidación automática
|
|
354
|
-
- **Compilación incremental**: Solo recompila archivos modificados
|
|
355
|
-
- **Progress tracking**: Métricas en tiempo real con timing detallado
|
|
356
|
-
- **Lazy loading**: Carga de módulos bajo demanda para máxima eficiencia
|
|
357
|
-
|
|
358
|
-
### 🔍 Sistema de Linting Dual de Nueva Generación
|
|
359
|
-
|
|
360
|
-
- **ESLint**: Análisis profundo de código JavaScript/TypeScript/Vue
|
|
361
|
-
- Soporte para múltiples formatos de salida (json, stylish, compact)
|
|
362
|
-
- Cache inteligente para acelerar análisis repetitivos
|
|
363
|
-
- Auto-fix avanzado con preservación de formato
|
|
364
|
-
- **OxLint**: Linter ultra-rápido escrito en Rust
|
|
365
|
-
- Análisis paralelo de archivos
|
|
366
|
-
- Reglas optimizadas para Vue 3 y TypeScript moderno
|
|
367
|
-
- Integración con tsconfig.json
|
|
368
|
-
|
|
369
|
-
### 📝 TypeScript de Última Generación
|
|
370
|
-
|
|
371
|
-
- **Language Service Host**: Validación de tipos completa y optimizada
|
|
372
|
-
- **Soporte para Decorators**: Experimental decorators y emit decorator metadata
|
|
373
|
-
- **Archivos virtuales**: Soporte para archivos .vue como .vue.ts
|
|
374
|
-
- **Worker-based validation**: Validación de tipos en threads separados
|
|
375
|
-
- **Fallback inteligente**: Modo sincrónico para entornos de testing
|
|
376
|
-
- **Error filtering**: Filtrado inteligente de errores específicos de TypeScript
|
|
377
|
-
|
|
378
|
-
### 🧩 Soporte Vue 3 de Nivel Profesional
|
|
379
|
-
|
|
380
|
-
- **Vue 3.5 Support**: Soporte completo para las últimas características
|
|
381
|
-
- **Script Setup**: Compilación optimizada de composition API
|
|
382
|
-
- **CSS Modules**: Soporte completo para CSS modules con hashing
|
|
383
|
-
- **Scoped Styles**: Compilación de estilos scoped con scope IDs únicos
|
|
384
|
-
- **SCSS/Sass**: Preprocesadores CSS integrados
|
|
385
|
-
- **Custom Blocks**: Soporte para bloques personalizados en SFC
|
|
386
|
-
- **Slots avanzados**: Compilación optimizada de slots con fallbacks
|
|
387
|
-
|
|
388
|
-
### 📦 Minificación y Optimización
|
|
389
|
-
|
|
390
|
-
- **OxcMinify**: Minificador de última generación escrito en Rust
|
|
391
|
-
- **Tree shaking**: Eliminación inteligente de código no utilizado
|
|
392
|
-
- **Variable mangling**: Renombrado de variables para máxima compresión
|
|
393
|
-
- **Dead code elimination**: Eliminación de código muerto
|
|
394
|
-
- **Compresión avanzada**: Algoritmos de compresión optimizados
|
|
395
|
-
- **Source maps**: Generación de source maps en desarrollo
|
|
396
|
-
|
|
397
|
-
### 🛡️ Sistema de Validación de Integridad (v2.4.0+)
|
|
398
|
-
|
|
399
|
-
Protección automática contra código corrupto en compilación y minificación con sistema de 4 niveles:
|
|
400
|
-
|
|
401
|
-
#### ✅ Check 1: Validación de Tamaño (~0.1ms)
|
|
402
|
-
|
|
403
|
-
- Verifica que el código no esté vacío después de compilación
|
|
404
|
-
- Detecta archivos con menos de 10 caracteres (posible corrupción)
|
|
405
|
-
- Previene archivos completamente vacíos por errores de minificación
|
|
406
|
-
|
|
407
|
-
#### 🔍 Check 2: Validación de Estructura (~1ms) ⚠️ _Temporalmente suspendido_
|
|
408
|
-
|
|
409
|
-
- Parser character-by-character para verificar brackets balanceados
|
|
410
|
-
- Detección de strings, template literals, comentarios y regex
|
|
411
|
-
- **Nota**: Actualmente suspendido debido a limitaciones con character classes en regex (`/[()\[\]{}]/`)
|
|
412
|
-
- Los otros 3 checks proporcionan protección suficiente durante la suspensión
|
|
413
|
-
|
|
414
|
-
#### 📤 Check 3: Validación de Exports (~1ms)
|
|
415
|
-
|
|
416
|
-
- Detecta exports eliminados incorrectamente durante transformaciones
|
|
417
|
-
- Compara exports del código original vs código procesado
|
|
418
|
-
- Previene bugs críticos en módulos que pierden sus APIs públicas
|
|
419
|
-
|
|
420
|
-
#### 🔬 Check 4: Validación de Sintaxis (~3ms)
|
|
421
|
-
|
|
422
|
-
- Validación completa con oxc-parser (parser JavaScript/TypeScript de producción)
|
|
423
|
-
- Detecta errores de sintaxis introducidos durante compilación
|
|
424
|
-
- Garantiza que el código generado es sintácticamente válido
|
|
425
|
-
|
|
426
|
-
#### 🚀 Características Adicionales
|
|
427
|
-
|
|
428
|
-
- **Cache LRU**: Hasta 100 entradas cacheadas para optimizar validaciones repetidas (~0.1ms en cache hit)
|
|
429
|
-
- **Performance objetivo**: <5ms por archivo (típicamente 1-3ms total)
|
|
430
|
-
- **Estadísticas detalladas**: Tracking de validaciones, cache hits/misses, duración promedio
|
|
431
|
-
- **Modo verbose**: Logging detallado de cada validación para debugging
|
|
432
|
-
- **Opciones configurables**: `skipSyntaxCheck`, `throwOnError`, `verbose`
|
|
433
|
-
|
|
434
|
-
#### 📊 Casos de Uso Detectados
|
|
435
|
-
|
|
436
|
-
```typescript
|
|
437
|
-
// Bug #1: Código vacío después de minificación (Check 1)
|
|
438
|
-
const result = minify(code);
|
|
439
|
-
// → IntegrityValidator detecta: "Tamaño de código inválido (0 chars)"
|
|
440
|
-
|
|
441
|
-
// Bug #2: Export eliminado por error (Check 3)
|
|
442
|
-
export const API_KEY = '...';
|
|
443
|
-
// → Después de transform: const API_KEY = "...";
|
|
444
|
-
// → IntegrityValidator detecta: "Export 'API_KEY' fue eliminado"
|
|
445
|
-
|
|
446
|
-
// Bug #3: Sintaxis inválida introducida (Check 4)
|
|
447
|
-
const obj = { key: value };
|
|
448
|
-
// → Después de transform: const obj = { key: value
|
|
449
|
-
// → IntegrityValidator detecta: "SyntaxError: Expected '}'"
|
|
450
|
-
|
|
451
|
-
// Bug #4: Brackets desbalanceados (Check 2, cuando esté habilitado)
|
|
452
|
-
const arr = [1, 2, 3];
|
|
453
|
-
// → Después de transform: const arr = [1, 2, 3;
|
|
454
|
-
// → IntegrityValidator detectará: "Corchetes desbalanceados"
|
|
455
|
-
```
|
|
456
|
-
|
|
457
|
-
#### 🎯 Uso Recomendado
|
|
458
|
-
|
|
459
|
-
```bash
|
|
460
|
-
# Desarrollo: Validación automática integrada
|
|
461
|
-
versacompiler --watch
|
|
462
|
-
# → Validación de integridad en cada compilación
|
|
463
|
-
|
|
464
|
-
# Producción: Validación explícita antes de deploy
|
|
465
|
-
versacompiler --all --prod --checkIntegrity
|
|
466
|
-
# → 100% de archivos validados antes de deployment
|
|
467
|
-
|
|
468
|
-
# CI/CD: Validación en pipeline
|
|
469
|
-
versacompiler --all --prod --checkIntegrity --yes
|
|
470
|
-
# → Build fallará si hay código corrupto
|
|
471
|
-
```
|
|
472
|
-
|
|
473
|
-
#### 📈 Resultados de Validación
|
|
474
|
-
|
|
475
|
-
- **Validación típica**: 1-3ms por archivo
|
|
476
|
-
- **Cache hit**: <0.1ms (resultado reutilizado)
|
|
477
|
-
- **Overhead total**: <5ms adicional en compilación estándar
|
|
478
|
-
- **Tests**: 32/32 tests pasando con cobertura completa
|
|
479
|
-
- **Tasa de éxito**: 40/40 archivos (100%) con Checks 1, 3 y 4 activos
|
|
480
|
-
|
|
481
|
-
### 🛠️ Gestión de Archivos y Cache
|
|
482
|
-
|
|
483
|
-
- **Sistema de cache multinivel**: Cache de configuraciones, compilaciones y validaciones
|
|
484
|
-
- **Invalidación inteligente**: Cache invalidation basado en timestamps y dependencias
|
|
485
|
-
- **Compilación granular**: Compilación por archivo individual o en lotes
|
|
486
|
-
- **Gestión de dependencias**: Tracking automático de dependencias entre archivos
|
|
487
|
-
- **Limpieza automática**: Auto-limpieza de archivos obsoletos
|
|
488
|
-
|
|
489
|
-
### 🎨 TailwindCSS Integrado
|
|
490
|
-
|
|
491
|
-
- **Compilación automática**: Watch mode integrado para cambios en CSS
|
|
492
|
-
- **Optimización de producción**: Minificación y purging automático
|
|
493
|
-
- **Content scanning**: Escaneo inteligente de archivos para clases utilizadas
|
|
494
|
-
- **Config personalizada**: Soporte para configuraciones personalizadas de Tailwind
|
|
495
|
-
|
|
496
|
-
## 🚧 Troubleshooting
|
|
497
|
-
|
|
498
|
-
### ❌ Problemas Frecuentes
|
|
499
|
-
|
|
500
|
-
#### 🔍 Error: "Cannot resolve module" o problemas de imports
|
|
501
|
-
|
|
502
|
-
```bash
|
|
503
|
-
# Verificar configuración de aliases y paths
|
|
504
|
-
versacompiler --verbose --file problemFile.ts
|
|
505
|
-
|
|
506
|
-
# Limpiar cache TypeScript si persiste
|
|
507
|
-
versacompiler --cleanCache
|
|
508
|
-
|
|
509
|
-
# Verificar configuración en tsconfig.json
|
|
510
|
-
cat tsconfig.json | grep -A 10 "paths"
|
|
511
|
-
```
|
|
512
|
-
|
|
513
|
-
#### 🔥 HMR no funciona correctamente
|
|
514
|
-
|
|
515
|
-
```typescript
|
|
516
|
-
// Verificar configuración en versacompile.config.ts
|
|
517
|
-
export default {
|
|
518
|
-
proxyConfig: {
|
|
519
|
-
proxyUrl: '', // Vacío si no usas proxy backend
|
|
520
|
-
assetsOmit: true,
|
|
521
|
-
},
|
|
522
|
-
};
|
|
523
|
-
```
|
|
524
|
-
|
|
525
|
-
```bash
|
|
526
|
-
# Reiniciar con limpieza de cache
|
|
527
|
-
versacompiler --watch --cleanCache
|
|
528
|
-
```
|
|
529
|
-
|
|
530
|
-
#### 🐌 Compilación o linting muy lento
|
|
531
|
-
|
|
532
|
-
```bash
|
|
533
|
-
# Usar solo OxLint para máxima velocidad
|
|
534
|
-
versacompiler --linter --verbose
|
|
535
|
-
|
|
536
|
-
# Verificar si worker threads están activos
|
|
537
|
-
versacompiler --verbose --typeCheck
|
|
538
|
-
|
|
539
|
-
# Limpiar cache si está corrupto
|
|
540
|
-
versacompiler --cleanCache --cleanOutput
|
|
541
|
-
```
|
|
542
|
-
|
|
543
|
-
#### 🔴 Errores de TypeScript en archivos Vue
|
|
544
|
-
|
|
545
|
-
```bash
|
|
546
|
-
# Verificar soporte para decorators en tsconfig.json
|
|
547
|
-
{
|
|
548
|
-
"compilerOptions": {
|
|
549
|
-
"experimentalDecorators": true,
|
|
550
|
-
"emitDecoratorMetadata": true
|
|
551
|
-
}
|
|
552
|
-
}
|
|
553
|
-
|
|
554
|
-
# Ejecutar solo verificación de tipos
|
|
555
|
-
versacompiler --typeCheck --file Component.vue
|
|
556
|
-
```
|
|
557
|
-
|
|
558
|
-
#### ⚠️ Warnings de dependencias o módulos
|
|
559
|
-
|
|
560
|
-
```bash
|
|
561
|
-
# Verificar si las dependencias están instaladas
|
|
562
|
-
npm install
|
|
563
|
-
|
|
564
|
-
# Revisar configuración de paths en versacompile.config.ts
|
|
565
|
-
versacompiler --verbose --file problematicFile.ts
|
|
566
|
-
```
|
|
567
|
-
|
|
568
|
-
#### 🎨 TailwindCSS no se actualiza
|
|
569
|
-
|
|
570
|
-
```bash
|
|
571
|
-
# Verificar configuración de Tailwind
|
|
572
|
-
versacompiler --tailwind --verbose
|
|
573
|
-
|
|
574
|
-
# Limpiar cache de TailwindCSS
|
|
575
|
-
rm -rf ./node_modules/.cache/tailwindcss
|
|
576
|
-
versacompiler --tailwind --cleanCache
|
|
577
|
-
```
|
|
578
|
-
|
|
579
|
-
### 🔧 Configuraciones de Debug
|
|
580
|
-
|
|
581
|
-
#### Habilitar logging detallado
|
|
582
|
-
|
|
583
|
-
```bash
|
|
584
|
-
# Máximo nivel de detalle
|
|
585
|
-
versacompiler --verbose --all
|
|
586
|
-
|
|
587
|
-
# Debug específico por archivo
|
|
588
|
-
versacompiler --verbose --file src/problematicFile.vue
|
|
589
|
-
```
|
|
590
|
-
|
|
591
|
-
#### Verificar configuración activa
|
|
592
|
-
|
|
593
|
-
```bash
|
|
594
|
-
# Ver configuración cargada
|
|
595
|
-
versacompiler --verbose --init # Muestra config actual
|
|
596
|
-
```
|
|
597
|
-
|
|
598
|
-
#### Performance profiling
|
|
599
|
-
|
|
600
|
-
```bash
|
|
601
|
-
# Analizar performance de compilación
|
|
602
|
-
versacompiler --verbose --all --prod
|
|
603
|
-
# Revisar timings en la salida
|
|
604
|
-
```
|
|
605
|
-
|
|
606
|
-
## 📚 Documentación
|
|
607
|
-
|
|
608
|
-
- 📖 [**Guía de Inicio Rápido**](./docs/getting-started.md)
|
|
609
|
-
- 📋 [**Configuración Avanzada**](./docs/configuration.md)
|
|
610
|
-
- 🎯 [**Ejemplos y Recetas**](./docs/examples.md)
|
|
611
|
-
- 🔧 [**API Reference**](./docs/api.md)
|
|
612
|
-
- 🔄 [**Guía de Migración**](./docs/migration.md)
|
|
613
|
-
- 🤝 [**Guía de Contribución**](./docs/contributing.md)
|
|
614
|
-
- ❓ [**FAQ - Preguntas Frecuentes**](./docs/faq.md)
|
|
615
|
-
|
|
616
|
-
## 🧪 Testing
|
|
617
|
-
|
|
618
|
-
```bash
|
|
619
|
-
# Ejecutar tests
|
|
620
|
-
npm test
|
|
621
|
-
|
|
622
|
-
# Tests con coverage
|
|
623
|
-
npm run test:coverage
|
|
624
|
-
|
|
625
|
-
# Tests en modo watch
|
|
626
|
-
npm run test:watch
|
|
627
|
-
```
|
|
628
|
-
|
|
629
|
-
## 🤝 Contribuir
|
|
630
|
-
|
|
631
|
-
¡Las contribuciones son bienvenidas! Ver [CONTRIBUTING.md](./docs/contributing.md) para detalles.
|
|
632
|
-
|
|
633
|
-
### 🛠️ Desarrollo Local
|
|
634
|
-
|
|
635
|
-
```bash
|
|
636
|
-
git clone https://github.com/kriollo/versaCompiler.git
|
|
637
|
-
cd versaCompiler
|
|
638
|
-
npm install
|
|
639
|
-
npm run dev
|
|
640
|
-
```
|
|
641
|
-
|
|
642
|
-
## 📄 Licencia
|
|
643
|
-
|
|
644
|
-
MIT © [Jorge Jara H](https://github.com/kriollo)
|
|
645
|
-
|
|
646
|
-
## 🙏 Agradecimientos
|
|
647
|
-
|
|
648
|
-
- **Vue.js Team** - Por el increíble framework
|
|
649
|
-
- **TypeScript Team** - Por el excelente sistema de tipos
|
|
650
|
-
- **Oxc Project** - Por las herramientas de desarrollo ultra-rápidas
|
|
651
|
-
- **Comunidad Open Source** - Por el feedback y contribuciones
|
|
652
|
-
|
|
653
|
-
---
|
|
654
|
-
|
|
655
|
-
## 🔧 Arquitectura Técnica
|
|
656
|
-
|
|
657
|
-
### Compilación de Archivos
|
|
658
|
-
|
|
659
|
-
- **JavaScript (.js)**: Procesamiento, transformaciones y optimización con placement inteligente
|
|
660
|
-
- **TypeScript (.ts)**: Transpilación completa usando TypeScript Compiler API con Language Service
|
|
661
|
-
- **Vue SFC (.vue)**: Compilación completa de Single File Components con:
|
|
662
|
-
- Script compilation (incluyendo script setup)
|
|
663
|
-
- Template compilation con optimizaciones
|
|
664
|
-
- Style compilation (CSS, SCSS, CSS Modules, Scoped)
|
|
665
|
-
- Custom blocks processing
|
|
666
|
-
|
|
667
|
-
### Sistema de Workers Avanzado
|
|
668
|
-
|
|
669
|
-
- **TypeScript Worker Threads**: Validación de tipos en procesos separados
|
|
670
|
-
- **Fallback sincrónico**: Detección automática de entorno de testing
|
|
671
|
-
- **Pool de workers**: Optimizado según CPU cores disponibles
|
|
672
|
-
- **Cache de validación**: Resultados de validación persistentes
|
|
673
|
-
|
|
674
|
-
### Minificación de Última Generación
|
|
675
|
-
|
|
676
|
-
- **OxcMinify**: Minificador ultra-rápido en Rust para modo `--prod`
|
|
677
|
-
- **Variable mangling**: Renombrado inteligente de variables
|
|
678
|
-
- **Dead code elimination**: Eliminación de código no utilizado
|
|
679
|
-
- **Modern JavaScript**: Preservación de sintaxis ES2020+
|
|
680
|
-
|
|
681
|
-
### Sistema de Observación de Archivos
|
|
682
|
-
|
|
683
|
-
- **Chokidar**: Observación eficiente de cambios en archivos
|
|
684
|
-
- **Debounced compilation**: Evita recompilaciones excesivas
|
|
685
|
-
- **Dependency tracking**: Seguimiento de dependencias entre archivos
|
|
686
|
-
- **Hot Module Replacement**: Actualizaciones sin perder estado
|
|
687
|
-
|
|
688
|
-
### Cache Multinivel
|
|
689
|
-
|
|
690
|
-
- **Configuration cache**: Cache de tsconfig.json y configuraciones
|
|
691
|
-
- **Compilation cache**: Resultados de compilación por archivo
|
|
692
|
-
- **TypeScript cache**: Cache del Language Service Host
|
|
693
|
-
- **File system cache**: Cache de lecturas de archivos
|
|
694
|
-
|
|
695
|
-
### Dependencias Principales
|
|
696
|
-
|
|
697
|
-
- **Vue.js**: `vue/compiler-sfc` para compilación de SFC
|
|
698
|
-
- **TypeScript**: Compiler API completa con Language Service Host
|
|
699
|
-
- **OxcMinify**: Minificación ultra-optimizada
|
|
700
|
-
- **OxLint**: Linting ultra-rápido en Rust
|
|
701
|
-
- **ESLint**: Análisis profundo de código
|
|
702
|
-
- **Chokidar**: Observación de archivos
|
|
703
|
-
- **BrowserSync**: Servidor de desarrollo con HMR
|
|
704
|
-
- **TailwindCSS**: Compilación de utilidades CSS
|
|
705
|
-
|
|
706
|
-
### Optimizaciones de Performance
|
|
707
|
-
|
|
708
|
-
- **Lazy loading**: Carga de módulos bajo demanda
|
|
709
|
-
- **Module manager**: Gestión inteligente de dependencias pesadas
|
|
710
|
-
- **Compilation batching**: Agrupación de compilaciones
|
|
711
|
-
- **Progressive compilation**: Compilación incremental
|
|
712
|
-
- **Memory management**: Gestión optimizada de memoria en workers
|
|
713
|
-
|
|
714
|
-
---
|
|
715
|
-
|
|
716
|
-
<div align="center">
|
|
717
|
-
|
|
718
|
-
**¿Te gusta VersaCompiler? ¡Dale una ⭐ en GitHub!**
|
|
719
|
-
|
|
720
|
-
[🐛 Reportar Bug](https://github.com/kriollo/versaCompiler/issues) • [✨ Feature Request](https://github.com/kriollo/versaCompiler/issues) • [💬 Discusiones](https://github.com/kriollo/versaCompiler/discussions)
|
|
721
|
-
|
|
722
|
-
</div>
|
|
1
|
+
# 🚀 VersaCompiler
|
|
2
|
+
|
|
3
|
+
[](https://opensource.org/licenses/MIT)
|
|
4
|
+
[](https://www.typescriptlang.org/)
|
|
5
|
+
[](https://vuejs.org/)
|
|
6
|
+
|
|
7
|
+
> **🎯 Compilador rápido y eficiente para Vue.js, TypeScript y JavaScript con Hot Module Replacement (HMR) integrado.**
|
|
8
|
+
|
|
9
|
+
**VersaCompiler** es una herramienta de compilación diseñada para proyectos Vue 3 con soporte completo para TypeScript, JavaScript y todas las funcionalidades modernas que necesitas para desarrollo web.
|
|
10
|
+
|
|
11
|
+
## 🌟 Características Principales
|
|
12
|
+
|
|
13
|
+
- ⚡ **Compilación ultra-rápida** - Workers paralelos y cache inteligente
|
|
14
|
+
- 🔥 **HMR Automático (como Vite)** - Detección inteligente sin configuración manual, igual que Vite y esbuild
|
|
15
|
+
- 🧩 **Soporte completo para Vue 3** - SFC, Composition API, script setup
|
|
16
|
+
- 📝 **TypeScript avanzado** - Language Service, decorators, validación de tipos
|
|
17
|
+
- 🔍 **Sistema de linting dual** - ESLint + OxLint con auto-fix
|
|
18
|
+
- 🎨 **TailwindCSS integrado** - Compilación automática y optimizada
|
|
19
|
+
- 🗜️ **Minificación de última generación** - OxcMinify para builds ultra-optimizados
|
|
20
|
+
- 🛡️ **Validación de integridad** - Sistema de 4 niveles que detecta código corrupto, exports eliminados y errores de sintaxis en builds
|
|
21
|
+
- �📦 **Bundling inteligente** - Agrupación configurable de módulos (EN DESARROLLO)
|
|
22
|
+
- 🛠️ **Compilación por archivo** - Granular control de compilación
|
|
23
|
+
- 🧹 **Gestión de caché avanzada** - Cache automático con invalidación inteligente
|
|
24
|
+
|
|
25
|
+
## ⚡ Instalación
|
|
26
|
+
|
|
27
|
+
### 📦 Desde código fuente
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
git clone https://github.com/kriollo/versaCompiler.git
|
|
31
|
+
cd versaCompiler
|
|
32
|
+
npm install
|
|
33
|
+
npm run build
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 🔗 Instalación local en tu proyecto
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# Copiar archivos compilados a tu proyecto
|
|
40
|
+
cp -r dist/* tu-proyecto/versacompiler/
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## 🎯 Quick Start
|
|
44
|
+
|
|
45
|
+
### 1. Configuración inicial
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# Crear archivo de configuración
|
|
49
|
+
versacompiler --init
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### 2. Estructura de proyecto
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
mi-proyecto/
|
|
56
|
+
├── src/ # 📝 Código fuente
|
|
57
|
+
│ ├── components/ # 🧩 Componentes Vue
|
|
58
|
+
│ └── main.ts # 🚀 Punto de entrada
|
|
59
|
+
├── dist/ # 📦 Archivos compilados (auto-generado)
|
|
60
|
+
├── versacompile.config.ts # ⚙️ Configuración
|
|
61
|
+
└── package.json
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 3. Comandos básicos
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# 🔥 Desarrollo con auto-reload y HMR
|
|
68
|
+
versacompiler --watch
|
|
69
|
+
|
|
70
|
+
# 🔥 Desarrollo con análisis detallado
|
|
71
|
+
versacompiler --watch --verbose
|
|
72
|
+
|
|
73
|
+
# 🏗️ Compilar todo el proyecto
|
|
74
|
+
versacompiler --all
|
|
75
|
+
|
|
76
|
+
# 📄 Compilar archivo específico
|
|
77
|
+
versacompiler --file src/components/MyComponent.vue
|
|
78
|
+
|
|
79
|
+
# 📝 Compilar múltiples archivos específicos
|
|
80
|
+
versacompiler src/main.ts src/components/App.vue
|
|
81
|
+
|
|
82
|
+
# 🚀 Build para producción (minificado)
|
|
83
|
+
versacompiler --all --prod
|
|
84
|
+
|
|
85
|
+
# 🛡️ Build con validación de integridad (recomendado para deploy)
|
|
86
|
+
versacompiler --all --prod --checkIntegrity
|
|
87
|
+
|
|
88
|
+
# 🧹 Limpiar y recompilar todo
|
|
89
|
+
versacompiler --all --cleanOutput --cleanCache
|
|
90
|
+
|
|
91
|
+
# 🔍 Solo verificar código (linting)
|
|
92
|
+
versacompiler --linter
|
|
93
|
+
|
|
94
|
+
# 🎨 Solo compilar TailwindCSS
|
|
95
|
+
versacompiler --tailwind
|
|
96
|
+
|
|
97
|
+
# ⚡ Compilación rápida con confirmación automática
|
|
98
|
+
versacompiler --all --prod --yes
|
|
99
|
+
|
|
100
|
+
# 🔬 Verificación de tipos específica
|
|
101
|
+
versacompiler --typeCheck --file src/types.ts
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## 📖 Configuración
|
|
105
|
+
|
|
106
|
+
### 🛠️ Comandos CLI Disponibles
|
|
107
|
+
|
|
108
|
+
| Comando | Alias | Descripción |
|
|
109
|
+
| ------------------ | ----- | ------------------------------------------------ |
|
|
110
|
+
| `--init` | | Inicializar configuración del proyecto |
|
|
111
|
+
| `--watch` | `-w` | Modo observación con HMR y auto-recompilación |
|
|
112
|
+
| `--all` | | Compilar todos los archivos del proyecto |
|
|
113
|
+
| `--file <archivo>` | `-f` | Compilar un archivo específico |
|
|
114
|
+
| `[archivos...]` | | Compilar múltiples archivos específicos |
|
|
115
|
+
| `--prod` | `-p` | Modo producción con minificación |
|
|
116
|
+
| `--verbose` | `-v` | Mostrar información detallada de compilación |
|
|
117
|
+
| `--cleanOutput` | `-co` | Limpiar directorio de salida antes de compilar |
|
|
118
|
+
| `--cleanCache` | `-cc` | Limpiar caché de compilación |
|
|
119
|
+
| `--yes` | `-y` | Confirmar automáticamente todas las acciones |
|
|
120
|
+
| `--typeCheck` | `-t` | Habilitar/deshabilitar verificación de tipos |
|
|
121
|
+
| `--checkIntegrity` | `-ci` | Validar integridad del código compilado (deploy) |
|
|
122
|
+
| `--tailwind` | | Habilitar/deshabilitar compilación TailwindCSS |
|
|
123
|
+
| `--linter` | | Habilitar/deshabilitar análisis de código |
|
|
124
|
+
| `--help` | `-h` | Mostrar ayuda y opciones disponibles |
|
|
125
|
+
|
|
126
|
+
### 🔧 Archivo de configuración
|
|
127
|
+
|
|
128
|
+
Crea un archivo `versacompile.config.ts` en la raíz de tu proyecto:
|
|
129
|
+
|
|
130
|
+
```typescript
|
|
131
|
+
// Archivo de configuración de VersaCompiler
|
|
132
|
+
export default {
|
|
133
|
+
tsconfig: './tsconfig.json',
|
|
134
|
+
compilerOptions: {
|
|
135
|
+
sourceRoot: './src',
|
|
136
|
+
outDir: './dist',
|
|
137
|
+
pathsAlias: {
|
|
138
|
+
'@/*': ['src/*'],
|
|
139
|
+
'P@/*': ['public/*'],
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
proxyConfig: {
|
|
143
|
+
proxyUrl: '',
|
|
144
|
+
assetsOmit: true,
|
|
145
|
+
},
|
|
146
|
+
aditionalWatch: ['./app/templates/**/*.twig'],
|
|
147
|
+
tailwindConfig: {
|
|
148
|
+
bin: './node_modules/.bin/tailwindcss',
|
|
149
|
+
input: './src/css/input.css',
|
|
150
|
+
output: './public/css/output.css',
|
|
151
|
+
},
|
|
152
|
+
linter: [
|
|
153
|
+
{
|
|
154
|
+
name: 'eslint',
|
|
155
|
+
bin: './node_modules/.bin/eslint',
|
|
156
|
+
configFile: './eslint.config.js',
|
|
157
|
+
fix: false,
|
|
158
|
+
paths: ['src/'],
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
name: 'oxlint',
|
|
162
|
+
bin: './node_modules/.bin/oxlint',
|
|
163
|
+
configFile: './.oxlintrc.json',
|
|
164
|
+
fix: false,
|
|
165
|
+
paths: ['src/'],
|
|
166
|
+
},
|
|
167
|
+
],
|
|
168
|
+
bundlers: [
|
|
169
|
+
{
|
|
170
|
+
name: 'appLoader',
|
|
171
|
+
fileInput: './public/module/appLoader.js',
|
|
172
|
+
fileOutput: './public/module/appLoader.prod.js',
|
|
173
|
+
},
|
|
174
|
+
],
|
|
175
|
+
};
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### 📝 Opciones de configuración
|
|
179
|
+
|
|
180
|
+
#### `compilerOptions`
|
|
181
|
+
|
|
182
|
+
- `sourceRoot`: Directorio de archivos fuente (por defecto: `'./src'`)
|
|
183
|
+
- `outDir`: Directorio de salida (por defecto: `'./dist'`)
|
|
184
|
+
- `pathsAlias`: Aliases para imports (ej: `'@/*': ['src/*']`)
|
|
185
|
+
|
|
186
|
+
#### `proxyConfig`
|
|
187
|
+
|
|
188
|
+
- `proxyUrl`: URL del proxy para desarrollo
|
|
189
|
+
- `assetsOmit`: Omitir assets en el proxy
|
|
190
|
+
|
|
191
|
+
#### `tailwindConfig`
|
|
192
|
+
|
|
193
|
+
- `bin`: Ruta al binario de TailwindCSS
|
|
194
|
+
- `input`: Archivo CSS de entrada
|
|
195
|
+
- `output`: Archivo CSS de salida
|
|
196
|
+
|
|
197
|
+
#### `linter`
|
|
198
|
+
|
|
199
|
+
Array de configuraciones de linters avanzadas:
|
|
200
|
+
|
|
201
|
+
- `name`: Nombre del linter (`'eslint'` o `'oxlint'`)
|
|
202
|
+
- `bin`: Ruta al binario del linter
|
|
203
|
+
- `configFile`: Archivo de configuración del linter
|
|
204
|
+
- `fix`: Auto-fix de errores detectados
|
|
205
|
+
- `paths`: Rutas específicas a analizar
|
|
206
|
+
- `eslintConfig`: Configuración específica de ESLint
|
|
207
|
+
- `cache`: Habilitar cache de ESLint
|
|
208
|
+
- `maxWarnings`: Máximo número de warnings
|
|
209
|
+
- `quiet`: Mostrar solo errores
|
|
210
|
+
- `formats`: Formatos de salida (`'json'`, `'stylish'`, `'compact'`)
|
|
211
|
+
- `oxlintConfig`: Configuración específica de OxLint
|
|
212
|
+
- `rules`: Reglas personalizadas
|
|
213
|
+
- `plugins`: Plugins de OxLint
|
|
214
|
+
- `deny`: Reglas a denegar
|
|
215
|
+
- `allow`: Reglas a permitir
|
|
216
|
+
|
|
217
|
+
#### `bundlers`
|
|
218
|
+
|
|
219
|
+
Array de configuraciones de bundling:
|
|
220
|
+
|
|
221
|
+
- `name`: Nombre del bundle
|
|
222
|
+
- `fileInput`: Archivo de entrada
|
|
223
|
+
- `fileOutput`: Archivo de salida
|
|
224
|
+
|
|
225
|
+
## 🎯 Ejemplos de Uso
|
|
226
|
+
|
|
227
|
+
### Desarrollo Local
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
# Iniciar servidor de desarrollo con HMR
|
|
231
|
+
versacompiler --watch
|
|
232
|
+
|
|
233
|
+
# Desarrollo con información detallada
|
|
234
|
+
versacompiler --watch --verbose
|
|
235
|
+
|
|
236
|
+
# Compilación específica durante desarrollo
|
|
237
|
+
versacompiler --file src/main.ts
|
|
238
|
+
|
|
239
|
+
# Solo linting durante desarrollo
|
|
240
|
+
versacompiler --linter
|
|
241
|
+
|
|
242
|
+
# Desarrollo con limpieza de caché
|
|
243
|
+
versacompiler --watch --cleanCache
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### Compilación para Producción
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
# Build completo para producción
|
|
250
|
+
versacompiler --all --prod
|
|
251
|
+
|
|
252
|
+
# Build con limpieza previa
|
|
253
|
+
versacompiler --all --prod --cleanOutput --cleanCache
|
|
254
|
+
|
|
255
|
+
# Build silencioso para CI/CD
|
|
256
|
+
versacompiler --all --prod --yes
|
|
257
|
+
|
|
258
|
+
# Build con análisis detallado
|
|
259
|
+
versacompiler --all --prod --verbose
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### Flujos de Trabajo Específicos
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
# Compilar solo archivos modificados
|
|
266
|
+
versacompiler file1.vue file2.ts file3.js
|
|
267
|
+
|
|
268
|
+
# Verificación de tipos específica
|
|
269
|
+
versacompiler --typeCheck --file src/types/api.ts
|
|
270
|
+
|
|
271
|
+
# Solo TailwindCSS
|
|
272
|
+
versacompiler --tailwind
|
|
273
|
+
|
|
274
|
+
# Compilación híbrida (linting + compilación)
|
|
275
|
+
versacompiler --all --linter --typeCheck
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### Integración CI/CD
|
|
279
|
+
|
|
280
|
+
```bash
|
|
281
|
+
# Pipeline de CI completo
|
|
282
|
+
versacompiler --linter # 1. Verificar código
|
|
283
|
+
versacompiler --typeCheck --all # 2. Verificar tipos
|
|
284
|
+
versacompiler --all --prod --yes # 3. Build para producción
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
## 🧩 Casos de Uso Avanzados
|
|
288
|
+
|
|
289
|
+
### 🎮 Desarrollo de Componentes Vue
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
# Compilación específica de componente con hot reload
|
|
293
|
+
versacompiler --watch --file src/components/GameBoard.vue
|
|
294
|
+
|
|
295
|
+
# Desarrollo con validación de tipos estricta
|
|
296
|
+
versacompiler --watch --typeCheck --verbose
|
|
297
|
+
|
|
298
|
+
# Solo compilar estilos para rapid prototyping
|
|
299
|
+
versacompiler --tailwind --file src/styles/components.css
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### 🏢 Proyectos Enterprise
|
|
303
|
+
|
|
304
|
+
```bash
|
|
305
|
+
# Validación completa antes de commit
|
|
306
|
+
versacompiler --linter --typeCheck --all
|
|
307
|
+
|
|
308
|
+
# Build optimizado para múltiples entornos
|
|
309
|
+
versacompiler --all --prod --cleanOutput --verbose
|
|
310
|
+
|
|
311
|
+
# Análisis de bundle para optimización
|
|
312
|
+
versacompiler --all --prod --verbose | grep "Bundle"
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
### 🧪 Testing y CI/CD
|
|
316
|
+
|
|
317
|
+
```bash
|
|
318
|
+
# Pre-commit hooks
|
|
319
|
+
versacompiler --linter --typeCheck --cleanCache
|
|
320
|
+
|
|
321
|
+
# GitHub Actions / CI Pipeline
|
|
322
|
+
versacompiler --all --prod --yes --verbose
|
|
323
|
+
|
|
324
|
+
# Testing de componentes individuales
|
|
325
|
+
versacompiler --file tests/components/Button.test.ts
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
### 🎨 Design System Development
|
|
329
|
+
|
|
330
|
+
```bash
|
|
331
|
+
# Compilación de componentes de design system
|
|
332
|
+
versacompiler --watch src/design-system/components/
|
|
333
|
+
|
|
334
|
+
# Build de librería de componentes
|
|
335
|
+
versacompiler --all --prod src/design-system/
|
|
336
|
+
|
|
337
|
+
# Validación de tokens de diseño
|
|
338
|
+
versacompiler --tailwind --verbose
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
## 🏗️ Funcionalidades
|
|
342
|
+
|
|
343
|
+
### 🔥 Hot Module Replacement (HMR)
|
|
344
|
+
|
|
345
|
+
- **Componentes Vue**: Actualizaciones instantáneas preservando estado de componentes
|
|
346
|
+
- **TypeScript/JavaScript**: Recarga inteligente de módulos sin perder contexto
|
|
347
|
+
- **CSS/TailwindCSS**: Inyección de estilos en tiempo real
|
|
348
|
+
- **Key-based updates**: Sistema de keys únicos para identificación de componentes
|
|
349
|
+
|
|
350
|
+
### 🚀 Sistema de Compilación Avanzado
|
|
351
|
+
|
|
352
|
+
- **Worker Threads**: Pool de workers TypeScript optimizado para CPU cores
|
|
353
|
+
- **Cache inteligente**: Sistema de cache por archivos con invalidación automática
|
|
354
|
+
- **Compilación incremental**: Solo recompila archivos modificados
|
|
355
|
+
- **Progress tracking**: Métricas en tiempo real con timing detallado
|
|
356
|
+
- **Lazy loading**: Carga de módulos bajo demanda para máxima eficiencia
|
|
357
|
+
|
|
358
|
+
### 🔍 Sistema de Linting Dual de Nueva Generación
|
|
359
|
+
|
|
360
|
+
- **ESLint**: Análisis profundo de código JavaScript/TypeScript/Vue
|
|
361
|
+
- Soporte para múltiples formatos de salida (json, stylish, compact)
|
|
362
|
+
- Cache inteligente para acelerar análisis repetitivos
|
|
363
|
+
- Auto-fix avanzado con preservación de formato
|
|
364
|
+
- **OxLint**: Linter ultra-rápido escrito en Rust
|
|
365
|
+
- Análisis paralelo de archivos
|
|
366
|
+
- Reglas optimizadas para Vue 3 y TypeScript moderno
|
|
367
|
+
- Integración con tsconfig.json
|
|
368
|
+
|
|
369
|
+
### 📝 TypeScript de Última Generación
|
|
370
|
+
|
|
371
|
+
- **Language Service Host**: Validación de tipos completa y optimizada
|
|
372
|
+
- **Soporte para Decorators**: Experimental decorators y emit decorator metadata
|
|
373
|
+
- **Archivos virtuales**: Soporte para archivos .vue como .vue.ts
|
|
374
|
+
- **Worker-based validation**: Validación de tipos en threads separados
|
|
375
|
+
- **Fallback inteligente**: Modo sincrónico para entornos de testing
|
|
376
|
+
- **Error filtering**: Filtrado inteligente de errores específicos de TypeScript
|
|
377
|
+
|
|
378
|
+
### 🧩 Soporte Vue 3 de Nivel Profesional
|
|
379
|
+
|
|
380
|
+
- **Vue 3.5 Support**: Soporte completo para las últimas características
|
|
381
|
+
- **Script Setup**: Compilación optimizada de composition API
|
|
382
|
+
- **CSS Modules**: Soporte completo para CSS modules con hashing
|
|
383
|
+
- **Scoped Styles**: Compilación de estilos scoped con scope IDs únicos
|
|
384
|
+
- **SCSS/Sass**: Preprocesadores CSS integrados
|
|
385
|
+
- **Custom Blocks**: Soporte para bloques personalizados en SFC
|
|
386
|
+
- **Slots avanzados**: Compilación optimizada de slots con fallbacks
|
|
387
|
+
|
|
388
|
+
### 📦 Minificación y Optimización
|
|
389
|
+
|
|
390
|
+
- **OxcMinify**: Minificador de última generación escrito en Rust
|
|
391
|
+
- **Tree shaking**: Eliminación inteligente de código no utilizado
|
|
392
|
+
- **Variable mangling**: Renombrado de variables para máxima compresión
|
|
393
|
+
- **Dead code elimination**: Eliminación de código muerto
|
|
394
|
+
- **Compresión avanzada**: Algoritmos de compresión optimizados
|
|
395
|
+
- **Source maps**: Generación de source maps en desarrollo
|
|
396
|
+
|
|
397
|
+
### 🛡️ Sistema de Validación de Integridad (v2.4.0+)
|
|
398
|
+
|
|
399
|
+
Protección automática contra código corrupto en compilación y minificación con sistema de 4 niveles:
|
|
400
|
+
|
|
401
|
+
#### ✅ Check 1: Validación de Tamaño (~0.1ms)
|
|
402
|
+
|
|
403
|
+
- Verifica que el código no esté vacío después de compilación
|
|
404
|
+
- Detecta archivos con menos de 10 caracteres (posible corrupción)
|
|
405
|
+
- Previene archivos completamente vacíos por errores de minificación
|
|
406
|
+
|
|
407
|
+
#### 🔍 Check 2: Validación de Estructura (~1ms) ⚠️ _Temporalmente suspendido_
|
|
408
|
+
|
|
409
|
+
- Parser character-by-character para verificar brackets balanceados
|
|
410
|
+
- Detección de strings, template literals, comentarios y regex
|
|
411
|
+
- **Nota**: Actualmente suspendido debido a limitaciones con character classes en regex (`/[()\[\]{}]/`)
|
|
412
|
+
- Los otros 3 checks proporcionan protección suficiente durante la suspensión
|
|
413
|
+
|
|
414
|
+
#### 📤 Check 3: Validación de Exports (~1ms)
|
|
415
|
+
|
|
416
|
+
- Detecta exports eliminados incorrectamente durante transformaciones
|
|
417
|
+
- Compara exports del código original vs código procesado
|
|
418
|
+
- Previene bugs críticos en módulos que pierden sus APIs públicas
|
|
419
|
+
|
|
420
|
+
#### 🔬 Check 4: Validación de Sintaxis (~3ms)
|
|
421
|
+
|
|
422
|
+
- Validación completa con oxc-parser (parser JavaScript/TypeScript de producción)
|
|
423
|
+
- Detecta errores de sintaxis introducidos durante compilación
|
|
424
|
+
- Garantiza que el código generado es sintácticamente válido
|
|
425
|
+
|
|
426
|
+
#### 🚀 Características Adicionales
|
|
427
|
+
|
|
428
|
+
- **Cache LRU**: Hasta 100 entradas cacheadas para optimizar validaciones repetidas (~0.1ms en cache hit)
|
|
429
|
+
- **Performance objetivo**: <5ms por archivo (típicamente 1-3ms total)
|
|
430
|
+
- **Estadísticas detalladas**: Tracking de validaciones, cache hits/misses, duración promedio
|
|
431
|
+
- **Modo verbose**: Logging detallado de cada validación para debugging
|
|
432
|
+
- **Opciones configurables**: `skipSyntaxCheck`, `throwOnError`, `verbose`
|
|
433
|
+
|
|
434
|
+
#### 📊 Casos de Uso Detectados
|
|
435
|
+
|
|
436
|
+
```typescript
|
|
437
|
+
// Bug #1: Código vacío después de minificación (Check 1)
|
|
438
|
+
const result = minify(code);
|
|
439
|
+
// → IntegrityValidator detecta: "Tamaño de código inválido (0 chars)"
|
|
440
|
+
|
|
441
|
+
// Bug #2: Export eliminado por error (Check 3)
|
|
442
|
+
export const API_KEY = '...';
|
|
443
|
+
// → Después de transform: const API_KEY = "...";
|
|
444
|
+
// → IntegrityValidator detecta: "Export 'API_KEY' fue eliminado"
|
|
445
|
+
|
|
446
|
+
// Bug #3: Sintaxis inválida introducida (Check 4)
|
|
447
|
+
const obj = { key: value };
|
|
448
|
+
// → Después de transform: const obj = { key: value
|
|
449
|
+
// → IntegrityValidator detecta: "SyntaxError: Expected '}'"
|
|
450
|
+
|
|
451
|
+
// Bug #4: Brackets desbalanceados (Check 2, cuando esté habilitado)
|
|
452
|
+
const arr = [1, 2, 3];
|
|
453
|
+
// → Después de transform: const arr = [1, 2, 3;
|
|
454
|
+
// → IntegrityValidator detectará: "Corchetes desbalanceados"
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
#### 🎯 Uso Recomendado
|
|
458
|
+
|
|
459
|
+
```bash
|
|
460
|
+
# Desarrollo: Validación automática integrada
|
|
461
|
+
versacompiler --watch
|
|
462
|
+
# → Validación de integridad en cada compilación
|
|
463
|
+
|
|
464
|
+
# Producción: Validación explícita antes de deploy
|
|
465
|
+
versacompiler --all --prod --checkIntegrity
|
|
466
|
+
# → 100% de archivos validados antes de deployment
|
|
467
|
+
|
|
468
|
+
# CI/CD: Validación en pipeline
|
|
469
|
+
versacompiler --all --prod --checkIntegrity --yes
|
|
470
|
+
# → Build fallará si hay código corrupto
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
#### 📈 Resultados de Validación
|
|
474
|
+
|
|
475
|
+
- **Validación típica**: 1-3ms por archivo
|
|
476
|
+
- **Cache hit**: <0.1ms (resultado reutilizado)
|
|
477
|
+
- **Overhead total**: <5ms adicional en compilación estándar
|
|
478
|
+
- **Tests**: 32/32 tests pasando con cobertura completa
|
|
479
|
+
- **Tasa de éxito**: 40/40 archivos (100%) con Checks 1, 3 y 4 activos
|
|
480
|
+
|
|
481
|
+
### 🛠️ Gestión de Archivos y Cache
|
|
482
|
+
|
|
483
|
+
- **Sistema de cache multinivel**: Cache de configuraciones, compilaciones y validaciones
|
|
484
|
+
- **Invalidación inteligente**: Cache invalidation basado en timestamps y dependencias
|
|
485
|
+
- **Compilación granular**: Compilación por archivo individual o en lotes
|
|
486
|
+
- **Gestión de dependencias**: Tracking automático de dependencias entre archivos
|
|
487
|
+
- **Limpieza automática**: Auto-limpieza de archivos obsoletos
|
|
488
|
+
|
|
489
|
+
### 🎨 TailwindCSS Integrado
|
|
490
|
+
|
|
491
|
+
- **Compilación automática**: Watch mode integrado para cambios en CSS
|
|
492
|
+
- **Optimización de producción**: Minificación y purging automático
|
|
493
|
+
- **Content scanning**: Escaneo inteligente de archivos para clases utilizadas
|
|
494
|
+
- **Config personalizada**: Soporte para configuraciones personalizadas de Tailwind
|
|
495
|
+
|
|
496
|
+
## 🚧 Troubleshooting
|
|
497
|
+
|
|
498
|
+
### ❌ Problemas Frecuentes
|
|
499
|
+
|
|
500
|
+
#### 🔍 Error: "Cannot resolve module" o problemas de imports
|
|
501
|
+
|
|
502
|
+
```bash
|
|
503
|
+
# Verificar configuración de aliases y paths
|
|
504
|
+
versacompiler --verbose --file problemFile.ts
|
|
505
|
+
|
|
506
|
+
# Limpiar cache TypeScript si persiste
|
|
507
|
+
versacompiler --cleanCache
|
|
508
|
+
|
|
509
|
+
# Verificar configuración en tsconfig.json
|
|
510
|
+
cat tsconfig.json | grep -A 10 "paths"
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
#### 🔥 HMR no funciona correctamente
|
|
514
|
+
|
|
515
|
+
```typescript
|
|
516
|
+
// Verificar configuración en versacompile.config.ts
|
|
517
|
+
export default {
|
|
518
|
+
proxyConfig: {
|
|
519
|
+
proxyUrl: '', // Vacío si no usas proxy backend
|
|
520
|
+
assetsOmit: true,
|
|
521
|
+
},
|
|
522
|
+
};
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
```bash
|
|
526
|
+
# Reiniciar con limpieza de cache
|
|
527
|
+
versacompiler --watch --cleanCache
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
#### 🐌 Compilación o linting muy lento
|
|
531
|
+
|
|
532
|
+
```bash
|
|
533
|
+
# Usar solo OxLint para máxima velocidad
|
|
534
|
+
versacompiler --linter --verbose
|
|
535
|
+
|
|
536
|
+
# Verificar si worker threads están activos
|
|
537
|
+
versacompiler --verbose --typeCheck
|
|
538
|
+
|
|
539
|
+
# Limpiar cache si está corrupto
|
|
540
|
+
versacompiler --cleanCache --cleanOutput
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
#### 🔴 Errores de TypeScript en archivos Vue
|
|
544
|
+
|
|
545
|
+
```bash
|
|
546
|
+
# Verificar soporte para decorators en tsconfig.json
|
|
547
|
+
{
|
|
548
|
+
"compilerOptions": {
|
|
549
|
+
"experimentalDecorators": true,
|
|
550
|
+
"emitDecoratorMetadata": true
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
# Ejecutar solo verificación de tipos
|
|
555
|
+
versacompiler --typeCheck --file Component.vue
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
#### ⚠️ Warnings de dependencias o módulos
|
|
559
|
+
|
|
560
|
+
```bash
|
|
561
|
+
# Verificar si las dependencias están instaladas
|
|
562
|
+
npm install
|
|
563
|
+
|
|
564
|
+
# Revisar configuración de paths en versacompile.config.ts
|
|
565
|
+
versacompiler --verbose --file problematicFile.ts
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
#### 🎨 TailwindCSS no se actualiza
|
|
569
|
+
|
|
570
|
+
```bash
|
|
571
|
+
# Verificar configuración de Tailwind
|
|
572
|
+
versacompiler --tailwind --verbose
|
|
573
|
+
|
|
574
|
+
# Limpiar cache de TailwindCSS
|
|
575
|
+
rm -rf ./node_modules/.cache/tailwindcss
|
|
576
|
+
versacompiler --tailwind --cleanCache
|
|
577
|
+
```
|
|
578
|
+
|
|
579
|
+
### 🔧 Configuraciones de Debug
|
|
580
|
+
|
|
581
|
+
#### Habilitar logging detallado
|
|
582
|
+
|
|
583
|
+
```bash
|
|
584
|
+
# Máximo nivel de detalle
|
|
585
|
+
versacompiler --verbose --all
|
|
586
|
+
|
|
587
|
+
# Debug específico por archivo
|
|
588
|
+
versacompiler --verbose --file src/problematicFile.vue
|
|
589
|
+
```
|
|
590
|
+
|
|
591
|
+
#### Verificar configuración activa
|
|
592
|
+
|
|
593
|
+
```bash
|
|
594
|
+
# Ver configuración cargada
|
|
595
|
+
versacompiler --verbose --init # Muestra config actual
|
|
596
|
+
```
|
|
597
|
+
|
|
598
|
+
#### Performance profiling
|
|
599
|
+
|
|
600
|
+
```bash
|
|
601
|
+
# Analizar performance de compilación
|
|
602
|
+
versacompiler --verbose --all --prod
|
|
603
|
+
# Revisar timings en la salida
|
|
604
|
+
```
|
|
605
|
+
|
|
606
|
+
## 📚 Documentación
|
|
607
|
+
|
|
608
|
+
- 📖 [**Guía de Inicio Rápido**](./docs/getting-started.md)
|
|
609
|
+
- 📋 [**Configuración Avanzada**](./docs/configuration.md)
|
|
610
|
+
- 🎯 [**Ejemplos y Recetas**](./docs/examples.md)
|
|
611
|
+
- 🔧 [**API Reference**](./docs/api.md)
|
|
612
|
+
- 🔄 [**Guía de Migración**](./docs/migration.md)
|
|
613
|
+
- 🤝 [**Guía de Contribución**](./docs/contributing.md)
|
|
614
|
+
- ❓ [**FAQ - Preguntas Frecuentes**](./docs/faq.md)
|
|
615
|
+
|
|
616
|
+
## 🧪 Testing
|
|
617
|
+
|
|
618
|
+
```bash
|
|
619
|
+
# Ejecutar tests
|
|
620
|
+
npm test
|
|
621
|
+
|
|
622
|
+
# Tests con coverage
|
|
623
|
+
npm run test:coverage
|
|
624
|
+
|
|
625
|
+
# Tests en modo watch
|
|
626
|
+
npm run test:watch
|
|
627
|
+
```
|
|
628
|
+
|
|
629
|
+
## 🤝 Contribuir
|
|
630
|
+
|
|
631
|
+
¡Las contribuciones son bienvenidas! Ver [CONTRIBUTING.md](./docs/contributing.md) para detalles.
|
|
632
|
+
|
|
633
|
+
### 🛠️ Desarrollo Local
|
|
634
|
+
|
|
635
|
+
```bash
|
|
636
|
+
git clone https://github.com/kriollo/versaCompiler.git
|
|
637
|
+
cd versaCompiler
|
|
638
|
+
npm install
|
|
639
|
+
npm run dev
|
|
640
|
+
```
|
|
641
|
+
|
|
642
|
+
## 📄 Licencia
|
|
643
|
+
|
|
644
|
+
MIT © [Jorge Jara H](https://github.com/kriollo)
|
|
645
|
+
|
|
646
|
+
## 🙏 Agradecimientos
|
|
647
|
+
|
|
648
|
+
- **Vue.js Team** - Por el increíble framework
|
|
649
|
+
- **TypeScript Team** - Por el excelente sistema de tipos
|
|
650
|
+
- **Oxc Project** - Por las herramientas de desarrollo ultra-rápidas
|
|
651
|
+
- **Comunidad Open Source** - Por el feedback y contribuciones
|
|
652
|
+
|
|
653
|
+
---
|
|
654
|
+
|
|
655
|
+
## 🔧 Arquitectura Técnica
|
|
656
|
+
|
|
657
|
+
### Compilación de Archivos
|
|
658
|
+
|
|
659
|
+
- **JavaScript (.js)**: Procesamiento, transformaciones y optimización con placement inteligente
|
|
660
|
+
- **TypeScript (.ts)**: Transpilación completa usando TypeScript Compiler API con Language Service
|
|
661
|
+
- **Vue SFC (.vue)**: Compilación completa de Single File Components con:
|
|
662
|
+
- Script compilation (incluyendo script setup)
|
|
663
|
+
- Template compilation con optimizaciones
|
|
664
|
+
- Style compilation (CSS, SCSS, CSS Modules, Scoped)
|
|
665
|
+
- Custom blocks processing
|
|
666
|
+
|
|
667
|
+
### Sistema de Workers Avanzado
|
|
668
|
+
|
|
669
|
+
- **TypeScript Worker Threads**: Validación de tipos en procesos separados
|
|
670
|
+
- **Fallback sincrónico**: Detección automática de entorno de testing
|
|
671
|
+
- **Pool de workers**: Optimizado según CPU cores disponibles
|
|
672
|
+
- **Cache de validación**: Resultados de validación persistentes
|
|
673
|
+
|
|
674
|
+
### Minificación de Última Generación
|
|
675
|
+
|
|
676
|
+
- **OxcMinify**: Minificador ultra-rápido en Rust para modo `--prod`
|
|
677
|
+
- **Variable mangling**: Renombrado inteligente de variables
|
|
678
|
+
- **Dead code elimination**: Eliminación de código no utilizado
|
|
679
|
+
- **Modern JavaScript**: Preservación de sintaxis ES2020+
|
|
680
|
+
|
|
681
|
+
### Sistema de Observación de Archivos
|
|
682
|
+
|
|
683
|
+
- **Chokidar**: Observación eficiente de cambios en archivos
|
|
684
|
+
- **Debounced compilation**: Evita recompilaciones excesivas
|
|
685
|
+
- **Dependency tracking**: Seguimiento de dependencias entre archivos
|
|
686
|
+
- **Hot Module Replacement**: Actualizaciones sin perder estado
|
|
687
|
+
|
|
688
|
+
### Cache Multinivel
|
|
689
|
+
|
|
690
|
+
- **Configuration cache**: Cache de tsconfig.json y configuraciones
|
|
691
|
+
- **Compilation cache**: Resultados de compilación por archivo
|
|
692
|
+
- **TypeScript cache**: Cache del Language Service Host
|
|
693
|
+
- **File system cache**: Cache de lecturas de archivos
|
|
694
|
+
|
|
695
|
+
### Dependencias Principales
|
|
696
|
+
|
|
697
|
+
- **Vue.js**: `vue/compiler-sfc` para compilación de SFC
|
|
698
|
+
- **TypeScript**: Compiler API completa con Language Service Host
|
|
699
|
+
- **OxcMinify**: Minificación ultra-optimizada
|
|
700
|
+
- **OxLint**: Linting ultra-rápido en Rust
|
|
701
|
+
- **ESLint**: Análisis profundo de código
|
|
702
|
+
- **Chokidar**: Observación de archivos
|
|
703
|
+
- **BrowserSync**: Servidor de desarrollo con HMR
|
|
704
|
+
- **TailwindCSS**: Compilación de utilidades CSS
|
|
705
|
+
|
|
706
|
+
### Optimizaciones de Performance
|
|
707
|
+
|
|
708
|
+
- **Lazy loading**: Carga de módulos bajo demanda
|
|
709
|
+
- **Module manager**: Gestión inteligente de dependencias pesadas
|
|
710
|
+
- **Compilation batching**: Agrupación de compilaciones
|
|
711
|
+
- **Progressive compilation**: Compilación incremental
|
|
712
|
+
- **Memory management**: Gestión optimizada de memoria en workers
|
|
713
|
+
|
|
714
|
+
---
|
|
715
|
+
|
|
716
|
+
<div align="center">
|
|
717
|
+
|
|
718
|
+
**¿Te gusta VersaCompiler? ¡Dale una ⭐ en GitHub!**
|
|
719
|
+
|
|
720
|
+
[🐛 Reportar Bug](https://github.com/kriollo/versaCompiler/issues) • [✨ Feature Request](https://github.com/kriollo/versaCompiler/issues) • [💬 Discusiones](https://github.com/kriollo/versaCompiler/discussions)
|
|
721
|
+
|
|
722
|
+
</div>
|