versacompiler 1.0.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/LICENSE +21 -0
- package/README.md +145 -0
- package/dist/index.js +822 -0
- package/dist/services/acorn.js +28 -0
- package/dist/services/linter.js +55 -0
- package/dist/services/minify.js +31 -0
- package/dist/services/typescript.js +89 -0
- package/dist/services/vuejs.js +235 -0
- package/dist/utils/utils.js +26 -0
- package/package.json +47 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Jorge Jara H (kriollone@gmail.com)
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# versaCompiler para archivos JS - VUE - TS
|
|
2
|
+
|
|
3
|
+
## Descripción
|
|
4
|
+
|
|
5
|
+
`versaCompiler` es una potente y flexible herramienta de línea de comandos diseñada para simplificar el flujo de trabajo de desarrollo con archivos `.vue`, `.js` y `.ts`. Se especializa en la compilación, minificación y transpilación de estos archivos, optimizándolos para proyectos basados en Vue 3, con un robusto soporte para TypeScript.
|
|
6
|
+
|
|
7
|
+
Una de las características destacadas de `versaCompiler` es su implementación de Hot Module Replacement (HMR), que permite a los desarrolladores ver los cambios en tiempo real sin necesidad de recargar toda la página, agilizando significativamente el proceso de desarrollo y depuración.
|
|
8
|
+
|
|
9
|
+
## Instalación
|
|
10
|
+
|
|
11
|
+
Puedes integrar `versaCompiler` en tu proyecto de dos maneras:
|
|
12
|
+
|
|
13
|
+
1. **Clonando el repositorio (para desarrollo o contribución):**
|
|
14
|
+
|
|
15
|
+
```sh
|
|
16
|
+
git clone https://github.com/kriollo/versaCompiler.git
|
|
17
|
+
cd versaCompiler
|
|
18
|
+
npm install
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
2. **Instalándolo como una dependencia de NPM (recomendado para usar en tus proyectos):**
|
|
22
|
+
```sh
|
|
23
|
+
npm install versaCompiler --save-dev
|
|
24
|
+
```
|
|
25
|
+
_(Nota: Este comando funcionará una vez que el paquete sea publicado en NPM.)_
|
|
26
|
+
|
|
27
|
+
## Configuración de `tsconfig.json`
|
|
28
|
+
|
|
29
|
+
Para que `versaCompiler` funcione correctamente en tu proyecto, tu archivo `tsconfig.json` debe incluir ciertas configuraciones. Estas opciones le indican a TypeScript cómo compilar tus archivos y a `versaCompiler` dónde encontrarlos y dónde colocar el resultado.
|
|
30
|
+
|
|
31
|
+
A continuación, un ejemplo de una configuración recomendada para tu `tsconfig.json` cuando usas `versaCompiler`:
|
|
32
|
+
|
|
33
|
+
```json
|
|
34
|
+
{
|
|
35
|
+
"compilerOptions": {
|
|
36
|
+
"baseUrl": ".", // Directorio base para resolver nombres de módulos no absolutos
|
|
37
|
+
"paths": {
|
|
38
|
+
"@/*": ["src/*"] // Ejemplo: Alias para el directorio 'src'
|
|
39
|
+
},
|
|
40
|
+
"sourceRoot": "./src", // Especifica el directorio raíz de los archivos fuente de tu proyecto
|
|
41
|
+
"outDir": "./dist" // Directorio donde `versaCompiler` guardará los
|
|
42
|
+
},
|
|
43
|
+
"versaCompile": {
|
|
44
|
+
// Configuración específica para `versaCompiler`
|
|
45
|
+
"proxyConfig": {
|
|
46
|
+
"proxyUrl": "http://localhost:3000", // Opcional: URL para el proxy de BrowserSync (ej. tu servidor backend local)
|
|
47
|
+
"assetsOmit": false // Opcional: Poner en `true` para omitir logs de assets estáticos en BrowserSync
|
|
48
|
+
},
|
|
49
|
+
"tailwindcss": {
|
|
50
|
+
// Opcional: Configuración para la integración con TailwindCSS
|
|
51
|
+
"inputCSS": "./src/assets/css/tailwind.css", // Ruta a tu archivo principal de TailwindCSS
|
|
52
|
+
"outputCSS": "./public/css/style.css" // Ruta para el archivo CSS de Tailwind compilado
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Asegúrate de que `compilerOptions.paths` refleje la estructura de alias de tu proyecto. `sourceRoot` debe apuntar a tu carpeta de desarrollo (usualmente `src`), y `outDir` a la carpeta donde quieres que `versaCompiler` guarde los archivos compilados de tu proyecto.
|
|
59
|
+
|
|
60
|
+
La sección `versaCompile.proxyConfig` permite configurar un servidor proxy para `browser-sync` y controlar el log de assets. La sección `versaCompile.tailwindcss` permite integrar la compilación de TailwindCSS si la usas en tu proyecto.
|
|
61
|
+
|
|
62
|
+
## Uso (Instalador desde NPM)
|
|
63
|
+
|
|
64
|
+
Una vez que `versaCompiler` está instalado (ya sea clonado o como dependencia NPM) y tu `tsconfig.json` está configurado, puedes ejecutar el compilador desde la raíz del repositorio de `versaCompiler` (si lo clonaste) o desde tu proyecto (si lo instalaste como dependencia y tienes un script para ello).
|
|
65
|
+
|
|
66
|
+
### Ejecución del Compilador
|
|
67
|
+
|
|
68
|
+
Para iniciar el proceso de compilación, usa el siguiente comando desde la raíz del directorio de `versaCompiler` (donde se encuentra la carpeta `dist`):
|
|
69
|
+
|
|
70
|
+
```sh
|
|
71
|
+
npx versacompiler
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Este comando iniciará `versaCompiler` en modo de observación por defecto. Observará los cambios en los archivos `.js`, `.ts` y `.vue` dentro del directorio `src` (según la configuración de `sourceRoot` en tu `tsconfig.json`) y los recompilará automáticamente.
|
|
75
|
+
|
|
76
|
+
### Parámetros de Ejecución
|
|
77
|
+
|
|
78
|
+
Puedes modificar el comportamiento del compilador con los siguientes parámetros:
|
|
79
|
+
|
|
80
|
+
- **Sin Parámetros**: Activa el modo de observación (comportamiento por defecto).
|
|
81
|
+
```sh
|
|
82
|
+
npx versacompiler
|
|
83
|
+
```
|
|
84
|
+
- `--all`: Compila todos los archivos en el `sourceRoot` de una vez, en lugar de solo observar cambios.
|
|
85
|
+
```sh
|
|
86
|
+
npx versacompiler --all
|
|
87
|
+
```
|
|
88
|
+
- `--prod`: Realiza la compilación en modo producción. Esto generalmente incluye la minificación del código (usando `OxcMinify`) y la eliminación de comentarios para optimizar los archivos para el despliegue.
|
|
89
|
+
```sh
|
|
90
|
+
npx versacompiler --prod
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
También puedes combinar parámetros:
|
|
94
|
+
|
|
95
|
+
```sh
|
|
96
|
+
npx versacompiler --all --prod
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Este comando compilará todos los archivos en modo producción.
|
|
100
|
+
|
|
101
|
+
## Funcionalidades
|
|
102
|
+
|
|
103
|
+
### Compilación de Archivos
|
|
104
|
+
|
|
105
|
+
- **JavaScript**: Compila archivos `.js` y los coloca en el directorio `public`.
|
|
106
|
+
- **TypeScript**: Transpila archivos `.ts` a `.js` utilizando las opciones definidas en `tsconfig.json`.
|
|
107
|
+
- **Vue**: Procesa archivos `.vue`, compila sus scripts, plantillas y estilos, y los convierte en módulos JavaScript.
|
|
108
|
+
|
|
109
|
+
### Minificación
|
|
110
|
+
|
|
111
|
+
Si se ejecuta con el parámetro `--prod`, el código se minifica utilizando `OxcMinify`.
|
|
112
|
+
|
|
113
|
+
### Observación de Archivos
|
|
114
|
+
|
|
115
|
+
El compilador observa los cambios en los archivos `.js`, `.ts` y `.vue` en el directorio `src` y recompila automáticamente los archivos modificados.
|
|
116
|
+
|
|
117
|
+
### Vue Loader
|
|
118
|
+
|
|
119
|
+
- **Sanitización de Rutas**: Sanitiza las rutas de los módulos para prevenir ataques de traversal de directorios.
|
|
120
|
+
- **Manejo de Errores**: Muestra mensajes de error en el contenedor y envía los errores a Sentry si está configurado.
|
|
121
|
+
- **Hot Module Replacement (HMR)**: Implementa HMR para recargar componentes Vue y archivos JS sin recargar toda la página.
|
|
122
|
+
- **Árbol de Componentes**: Construye un árbol de componentes para manejar el HMR.
|
|
123
|
+
- **Recarga de Componentes**: Recarga componentes Vue y archivos JS dinámicamente.
|
|
124
|
+
|
|
125
|
+
## Dependencias
|
|
126
|
+
|
|
127
|
+
- **VueJS**: API (vue/compiler-sfc) para pasar de archivo .vue a javascript.
|
|
128
|
+
- **TypeScript**: API (transpileModule) para pasar de typescript a javascript.
|
|
129
|
+
- **OxcMinify**: API (minify) para limpiar, ordenar y comprimir el código.
|
|
130
|
+
- **Acorn**: API (Parser) para validar la sintaxis de los archivos compilados.
|
|
131
|
+
- **BrowserSync**: API (browserSync) para servir el proyecto adicional, genera WebSocket para servir HMR.
|
|
132
|
+
|
|
133
|
+
## Contribución
|
|
134
|
+
|
|
135
|
+
Si deseas contribuir a este proyecto, por favor sigue los siguientes pasos:
|
|
136
|
+
|
|
137
|
+
1. Haz un fork del repositorio.
|
|
138
|
+
2. Crea una nueva rama (`git checkout -b feature/nueva-funcionalidad`).
|
|
139
|
+
3. Realiza tus cambios y haz commit (`git commit -am 'Agregar nueva funcionalidad'`).
|
|
140
|
+
4. Sube tus cambios a tu fork (`git push origin feature/nueva-funcionalidad`).
|
|
141
|
+
5. Abre un Pull Request.
|
|
142
|
+
|
|
143
|
+
## Licencia
|
|
144
|
+
|
|
145
|
+
Este proyecto está licenciado bajo la Licencia MIT. Consulta el archivo `LICENSE` para más detalles.
|