lf-pagebuilder-vue 0.0.3 → 0.0.4
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 +277 -197
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.js +923 -895
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -1,300 +1,380 @@
|
|
|
1
|
-
#
|
|
1
|
+
# lf-pagebuilder-vue
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Editor visual para construir páginas HTML usando los componentes de `libreria-astro-lefebvre`.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Instalación
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
```bash
|
|
8
|
+
npm i lf-pagebuilder-vue
|
|
9
|
+
```
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
Luego en tu `package.json`, cambia la versión a `latest` para tener siempre la última:
|
|
10
12
|
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
:
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
```json
|
|
14
|
+
{
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"lf-pagebuilder-vue": "latest"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
```
|
|
18
20
|
|
|
19
|
-
|
|
20
|
-
import { Pagebuilder } from 'lf-pagebuilder-vue';
|
|
21
|
-
import 'lf-pagebuilder-vue/styles';
|
|
21
|
+
## ¿Qué es?
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
const isProduction = import.meta.env.PROD;
|
|
23
|
+
El Pagebuilder permite al usuario arrastrar y configurar componentes de la librería de componentes Astro de Lefebvre para diseñar páginas de forma visual.
|
|
25
24
|
|
|
26
|
-
|
|
27
|
-
// const isProduction = import.meta.env.VITE_IS_PRODUCTION === 'true';
|
|
25
|
+
**El Pagebuilder NO renderiza la página final.** Genera un JSON de configuración que se envía a una API externa renderizadora, que es la encargada de generar el HTML final.
|
|
28
26
|
|
|
29
|
-
|
|
30
|
-
</script>
|
|
31
|
-
```
|
|
27
|
+
## Formas de uso
|
|
32
28
|
|
|
33
|
-
|
|
34
|
-
|-------------------------|-----------------|
|
|
35
|
-
| `true` | URLs de producción (ej: `https://elderecho.com/feed`) |
|
|
36
|
-
| `false` | URLs de desarrollo (ej: `https://led-dev-elderecho-dev.eu.els.local/feed`) |
|
|
29
|
+
### 1. Como script IIFE (Symfony u otros backends)
|
|
37
30
|
|
|
38
|
-
|
|
31
|
+
En la carpeta `dist-symfony/` están los archivos compilados:
|
|
32
|
+
- `lf-pagebuilder-iife.iife.js`
|
|
33
|
+
- `lf-pagebuilder-iife.css`
|
|
39
34
|
|
|
40
|
-
|
|
35
|
+
**Instalación:**
|
|
41
36
|
|
|
42
|
-
|
|
43
|
-
- **Modo Visual/Configuración**: Alterna entre vista previa y modo de edición
|
|
44
|
-
- **Secciones**: Header, Body, Footer y Sidebar configurables
|
|
45
|
-
- **Configuración de filas y columnas**: Padding, gap, anchos personalizables
|
|
46
|
-
- **Feed de contenido**: Conecta componentes con fuentes de datos externas
|
|
47
|
-
- **Preview en tiempo real**: Visualiza los cambios al instante
|
|
48
|
-
- **Exportar/Importar**: Guarda y carga configuraciones JSON
|
|
49
|
-
- **SEO Validator**: Valida la estructura SEO de la página
|
|
37
|
+
Copiar estos archivos a la carpeta pública del proyecto. En Symfony, puedes configurar el build para que los copie automáticamente a `public/build/` o copiarlos manualmente.
|
|
50
38
|
|
|
51
|
-
|
|
39
|
+
**Uso:**
|
|
52
40
|
|
|
53
|
-
```
|
|
54
|
-
|
|
41
|
+
```html
|
|
42
|
+
<link rel="stylesheet" href="/build/lf-pagebuilder-iife.css">
|
|
43
|
+
<script src="/build/lf-pagebuilder-iife.iife.js"></script>
|
|
44
|
+
|
|
45
|
+
<!-- El Pagebuilder se monta automáticamente en elementos con el selector: -->
|
|
46
|
+
<div class="XXXXXXXX" data-is-production="false"></div>
|
|
55
47
|
```
|
|
56
48
|
|
|
57
|
-
|
|
49
|
+
El atributo `data-is-production` indica el entorno:
|
|
50
|
+
- `"true"` → Usa API de producción (`https://render-api.lefebvre.es`)
|
|
51
|
+
- `"false"` → Usa API de desarrollo (`https://led-dev-astro-render-api-dev.eu.els.local`)
|
|
52
|
+
|
|
53
|
+
---
|
|
58
54
|
|
|
59
|
-
|
|
55
|
+
### 2. Como componente Vue
|
|
60
56
|
|
|
61
57
|
```bash
|
|
62
|
-
npm install
|
|
58
|
+
npm install lf-pagebuilder-vue
|
|
63
59
|
```
|
|
64
60
|
|
|
65
|
-
## 🔧 Uso
|
|
66
|
-
|
|
67
|
-
### En un proyecto Vue 3
|
|
68
|
-
|
|
69
61
|
```vue
|
|
70
62
|
<template>
|
|
71
|
-
<Pagebuilder :
|
|
63
|
+
<Pagebuilder :isProduction="false" />
|
|
72
64
|
</template>
|
|
73
65
|
|
|
74
66
|
<script setup>
|
|
75
|
-
import { Pagebuilder } from '
|
|
76
|
-
import '@lefebvre/lf-pagebuilder-vue/styles';
|
|
77
|
-
|
|
78
|
-
const apiUrl = 'https://tu-api-render.com';
|
|
67
|
+
import { Pagebuilder } from 'lf-pagebuilder-vue';
|
|
79
68
|
</script>
|
|
80
69
|
```
|
|
81
70
|
|
|
82
|
-
|
|
71
|
+
**Props:**
|
|
83
72
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
import { Pagebuilder } from '@lefebvre/lf-pagebuilder-vue';
|
|
88
|
-
import '@lefebvre/lf-pagebuilder-vue/styles';
|
|
73
|
+
| Prop | Tipo | Default | Descripción |
|
|
74
|
+
|------|------|---------|-------------|
|
|
75
|
+
| `isProduction` | `boolean` | `false` | `true` = API producción, `false` = API desarrollo |
|
|
89
76
|
|
|
90
|
-
const renderApiUrl = import.meta.env.ASTRO_RENDER_API;
|
|
91
77
|
---
|
|
92
78
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
79
|
+
## Instalación y dependencias
|
|
80
|
+
|
|
81
|
+
### Dependencias requeridas en el proyecto padre
|
|
82
|
+
|
|
83
|
+
El proyecto que use este Pagebuilder debe tener instaladas estas dependencias:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
npm install vue@^3.3.0 vuedraggable@^4.1.0 @vueup/vue-quill@^1.2.0 libreria-astro-lefebvre@latest
|
|
98
87
|
```
|
|
99
88
|
|
|
100
|
-
|
|
89
|
+
| Dependencia | Versión | Descripción |
|
|
90
|
+
|-------------|---------|-------------|
|
|
91
|
+
| `vue` | ^3.3.0 | Framework Vue 3 |
|
|
92
|
+
| `vuedraggable` | ^4.1.0 | Drag & drop para Vue 3 |
|
|
93
|
+
| `@vueup/vue-quill` | ^1.2.0 | Editor de texto enriquecido |
|
|
94
|
+
| `libreria-astro-lefebvre` | latest | Librería de componentes Astro de Lefebvre |
|
|
101
95
|
|
|
102
|
-
|
|
103
|
-
|------------|-------------|
|
|
104
|
-
| `Pagebuilder` | Componente principal del page builder |
|
|
105
|
-
| `BodySection` | Sección del body con filas y columnas |
|
|
106
|
-
| `ColConfig` | Configuración de columnas |
|
|
107
|
-
| `ComponentsBox` | Caja de componentes disponibles |
|
|
108
|
-
| `FeedComponent` | Configuración de feeds de contenido |
|
|
109
|
-
| `FieldsForm` | Formulario de campos de componente |
|
|
110
|
-
| `GlobalConfig` | Barra de configuración global |
|
|
111
|
-
| `InitialComponent` | Componente individual renderizado |
|
|
112
|
-
| `RowConfig` | Configuración de filas |
|
|
113
|
-
| `SourceFilter` | Filtros de fuentes de datos |
|
|
96
|
+
### Configuración especial del proyecto padre
|
|
114
97
|
|
|
115
|
-
|
|
98
|
+
#### En proyectos Astro
|
|
116
99
|
|
|
117
|
-
|
|
118
|
-
|------|------|-----------|---------|-------------|
|
|
119
|
-
| `isProduction` | `boolean` | **Sí** | `false` | Determina si usar URLs de producción o desarrollo |
|
|
120
|
-
| `renderApiDomain` | `string` | No | - | URL del API de renderizado para previews |
|
|
100
|
+
El proyecto debe tener las integraciones de Vue y Tailwind:
|
|
121
101
|
|
|
122
|
-
|
|
102
|
+
```bash
|
|
103
|
+
npm install @astrojs/vue tailwindcss @tailwindcss/vite
|
|
104
|
+
```
|
|
123
105
|
|
|
124
|
-
|
|
106
|
+
En `astro.config.mjs`:
|
|
125
107
|
|
|
126
108
|
```js
|
|
127
|
-
import '
|
|
109
|
+
import { defineConfig } from 'astro/config';
|
|
110
|
+
import { searchForWorkspaceRoot } from 'vite';
|
|
111
|
+
import path from 'path';
|
|
112
|
+
import vue from '@astrojs/vue';
|
|
113
|
+
import tailwindcss from '@tailwindcss/vite';
|
|
114
|
+
|
|
115
|
+
export default defineConfig({
|
|
116
|
+
integrations: [vue()],
|
|
117
|
+
|
|
118
|
+
vite: {
|
|
119
|
+
plugins: [tailwindcss()],
|
|
120
|
+
server: {
|
|
121
|
+
fs: {
|
|
122
|
+
// Necesario si usas npm link con librerías hermanas
|
|
123
|
+
allow: [
|
|
124
|
+
searchForWorkspaceRoot(process.cwd()),
|
|
125
|
+
path.resolve(process.cwd(), '..'),
|
|
126
|
+
],
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
});
|
|
128
131
|
```
|
|
129
132
|
|
|
130
|
-
|
|
133
|
+
> **Nota:** La configuración de `vite.server.fs.allow` es necesaria cuando usas `npm link` para desarrollo local con librerías en carpetas hermanas. Si instalas el paquete desde npm, no es necesaria.
|
|
131
134
|
|
|
132
|
-
|
|
135
|
+
---
|
|
133
136
|
|
|
134
|
-
|
|
137
|
+
## Build
|
|
135
138
|
|
|
136
|
-
|
|
137
|
-
interface PageBuilderConfig {
|
|
138
|
-
pageConfig: PageSection[];
|
|
139
|
-
paramsConfig: PageParameters;
|
|
140
|
-
}
|
|
139
|
+
El proyecto tiene dos builds diferentes:
|
|
141
140
|
|
|
142
|
-
|
|
143
|
-
section: string;
|
|
144
|
-
config: { width?: string };
|
|
145
|
-
rows: PageRow[];
|
|
146
|
-
}
|
|
141
|
+
### Build estándar (librería npm)
|
|
147
142
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
columns: PageColumn[];
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
interface PageColumn {
|
|
154
|
-
config: { width?: string; gap?: string; flexDirection?: string };
|
|
155
|
-
components: PageComponent[];
|
|
156
|
-
}
|
|
143
|
+
```bash
|
|
144
|
+
npm run build
|
|
157
145
|
```
|
|
158
146
|
|
|
159
|
-
|
|
147
|
+
Genera en `dist/`:
|
|
148
|
+
- `index.js` - ES Module
|
|
149
|
+
- `index.cjs` - CommonJS
|
|
150
|
+
- `index.d.ts` - Tipos TypeScript
|
|
151
|
+
- `styles.css` - Estilos
|
|
160
152
|
|
|
161
|
-
|
|
153
|
+
Este es el build que se publica en npm.
|
|
162
154
|
|
|
163
|
-
|
|
164
|
-
2. **Renderizado de página**: `POST /api/render-html/`
|
|
155
|
+
### Build Symfony (IIFE)
|
|
165
156
|
|
|
166
|
-
|
|
157
|
+
```bash
|
|
158
|
+
npm run build:symfony
|
|
159
|
+
```
|
|
167
160
|
|
|
168
|
-
|
|
161
|
+
Genera en `dist-symfony/`:
|
|
162
|
+
- `lf-pagebuilder-iife.iife.js` - Script autocontenido
|
|
163
|
+
- `lf-pagebuilder-iife.css` - Estilos
|
|
169
164
|
|
|
170
|
-
|
|
171
|
-
import type {
|
|
172
|
-
PageSection,
|
|
173
|
-
PageRow,
|
|
174
|
-
PageColumn,
|
|
175
|
-
PageComponent,
|
|
176
|
-
ComponentField,
|
|
177
|
-
PageParameters,
|
|
178
|
-
PageBuilderConfig
|
|
179
|
-
} from '@lefebvre/lf-pagebuilder-vue';
|
|
180
|
-
```
|
|
165
|
+
Este build incluye Vue y todas las dependencias empaquetadas. Se puede usar directamente con `<script>` sin necesidad de bundler.
|
|
181
166
|
|
|
182
|
-
|
|
167
|
+
### Build completo
|
|
183
168
|
|
|
184
169
|
```bash
|
|
185
|
-
|
|
186
|
-
|
|
170
|
+
npm run build:all
|
|
171
|
+
```
|
|
187
172
|
|
|
188
|
-
|
|
189
|
-
npm install
|
|
173
|
+
Ejecuta ambos builds.
|
|
190
174
|
|
|
191
|
-
|
|
192
|
-
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## ⚠️ Desarrollo local
|
|
178
|
+
|
|
179
|
+
> **IMPORTANTE**: Lee esta sección completa antes de trabajar con este proyecto localmente.
|
|
180
|
+
|
|
181
|
+
### El problema del `package.json`
|
|
182
|
+
|
|
183
|
+
Este proyecto tiene **dos configuraciones de `package.json`** porque durante el desarrollo local NO queremos compilar constantemente:
|
|
184
|
+
|
|
185
|
+
| Archivo | Apunta a | Uso |
|
|
186
|
+
|---------|----------|-----|
|
|
187
|
+
| `package.dev.json` | `./src/` (código fuente) | Desarrollo local |
|
|
188
|
+
| `package.prod.json` | `./dist/` (compilado) | Publicar en npm |
|
|
189
|
+
|
|
190
|
+
**Durante el desarrollo**, el `package.json` debe apuntar a los archivos fuente para que los cambios se reflejen inmediatamente sin hacer build.
|
|
191
|
+
|
|
192
|
+
**Para publicar en npm**, debe apuntar a los archivos compilados.
|
|
193
|
+
|
|
194
|
+
#### Cambiar entre modos
|
|
195
|
+
|
|
196
|
+
Puedes copiar el archivo o copiar y pegar el contenido manualmente:
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
# Para DESARROLLO: copiar configuración de desarrollo
|
|
200
|
+
cp package.dev.json package.json
|
|
193
201
|
|
|
194
|
-
#
|
|
202
|
+
# Para PRODUCCIÓN/PUBLICAR: copiar configuración de producción
|
|
203
|
+
cp package.prod.json package.json
|
|
195
204
|
npm run build
|
|
205
|
+
npm publish
|
|
196
206
|
```
|
|
197
207
|
|
|
198
|
-
|
|
208
|
+
> ⚠️ **NUNCA publiques con la configuración de desarrollo.** El paquete no funcionará porque `./src/` no se incluye en el paquete publicado.
|
|
199
209
|
|
|
200
|
-
|
|
210
|
+
#### ⚠️ MUY IMPORTANTE: Mantener sincronizados los 3 archivos
|
|
201
211
|
|
|
202
|
-
|
|
203
|
-
- **Producción/npm**: Apunta a los archivos compilados (`./dist/`)
|
|
212
|
+
Los archivos `package.json`, `package.dev.json` y `package.prod.json` deben estar sincronizados:
|
|
204
213
|
|
|
205
|
-
|
|
214
|
+
- **Nueva dependencia**: Si añades una dependencia, añádela también en `package.dev.json` y `package.prod.json`
|
|
215
|
+
- **Cambio de versión**: Cuando subas la versión del paquete, actualízala en los 3 archivos
|
|
216
|
+
- **Cualquier otro cambio**: Scripts, keywords, etc. deben reflejarse en los 3
|
|
206
217
|
|
|
207
|
-
|
|
208
|
-
|
|
218
|
+
```bash
|
|
219
|
+
# Ejemplo: después de añadir una dependencia
|
|
220
|
+
npm install nueva-dependencia
|
|
209
221
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
"name": "lf-pagebuilder-vue",
|
|
213
|
-
"version": "0.0.1",
|
|
214
|
-
"description": "Pagebuilder Vue component library for Lefebvre projects",
|
|
215
|
-
"type": "module",
|
|
216
|
-
"main": "./src/index.ts",
|
|
217
|
-
"module": "./src/index.ts",
|
|
218
|
-
"types": "./src/index.ts",
|
|
219
|
-
"exports": {
|
|
220
|
-
".": {
|
|
221
|
-
"import": "./src/index.ts",
|
|
222
|
-
"types": "./src/index.ts"
|
|
223
|
-
},
|
|
224
|
-
"./styles": "./src/styles/pagebuilder.css"
|
|
225
|
-
},
|
|
226
|
-
"files": ["dist", "src", "README.md"]
|
|
227
|
-
}
|
|
222
|
+
# Ahora editar manualmente package.dev.json y package.prod.json
|
|
223
|
+
# para añadir "nueva-dependencia" en las mismas secciones
|
|
228
224
|
```
|
|
229
225
|
|
|
230
|
-
|
|
226
|
+
---
|
|
231
227
|
|
|
232
|
-
|
|
233
|
-
<summary><strong>📁 package.prod.json para PRODUCCIÓN (npm publish)</strong></summary>
|
|
228
|
+
### Trabajar con `npm link`
|
|
234
229
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
"module": "./dist/index.js",
|
|
243
|
-
"types": "./dist/index.d.ts",
|
|
244
|
-
"exports": {
|
|
245
|
-
".": {
|
|
246
|
-
"import": "./dist/index.js",
|
|
247
|
-
"require": "./dist/index.cjs",
|
|
248
|
-
"types": "./dist/index.d.ts"
|
|
249
|
-
},
|
|
250
|
-
"./styles": "./dist/styles.css"
|
|
251
|
-
},
|
|
252
|
-
"files": ["dist", "README.md"]
|
|
253
|
-
}
|
|
230
|
+
Para probar cambios localmente en otro proyecto sin publicar:
|
|
231
|
+
|
|
232
|
+
#### Paso 1: Crear el enlace en esta librería
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
cd /ruta/a/lf-pagebuilder-vue
|
|
236
|
+
npm link
|
|
254
237
|
```
|
|
255
238
|
|
|
256
|
-
|
|
239
|
+
#### Paso 2: Usar el enlace en tu proyecto
|
|
257
240
|
|
|
258
|
-
|
|
241
|
+
```bash
|
|
242
|
+
cd /ruta/a/tu-proyecto
|
|
243
|
+
npm link lf-pagebuilder-vue
|
|
244
|
+
```
|
|
259
245
|
|
|
260
|
-
|
|
246
|
+
---
|
|
261
247
|
|
|
262
|
-
|
|
248
|
+
### ⚠️ CRÍTICO: Múltiples librerías con `npm link`
|
|
263
249
|
|
|
264
|
-
|
|
250
|
+
**Este proyecto depende de `libreria-astro-lefebvre`.** Si necesitas trabajar con ambas librerías localmente (muy común), hay una trampa importante:
|
|
265
251
|
|
|
266
252
|
```bash
|
|
267
|
-
#
|
|
253
|
+
# ❌ INCORRECTO - El segundo comando ROMPE el primero
|
|
254
|
+
npm link lf-pagebuilder-vue
|
|
255
|
+
npm link libreria-astro-lefebvre
|
|
256
|
+
|
|
257
|
+
# ✅ CORRECTO - Linkear TODAS las librerías en UN SOLO comando
|
|
258
|
+
npm link lf-pagebuilder-vue libreria-astro-lefebvre
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
#### Flujo completo para trabajar con ambas librerías
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
# 1. En lf-pagebuilder-vue
|
|
268
265
|
cd /ruta/a/lf-pagebuilder-vue
|
|
266
|
+
cp package.dev.json package.json # Modo desarrollo
|
|
269
267
|
npm link
|
|
270
268
|
|
|
271
|
-
# En
|
|
269
|
+
# 2. En libreria-astro-lefebvre
|
|
272
270
|
cd /ruta/a/libreria-astro-lefebvre
|
|
273
271
|
npm link
|
|
272
|
+
|
|
273
|
+
# 3. En tu proyecto consumidor - AMBAS EN UN SOLO COMANDO
|
|
274
|
+
cd /ruta/a/tu-proyecto
|
|
275
|
+
npm link lf-pagebuilder-vue libreria-astro-lefebvre
|
|
274
276
|
```
|
|
275
277
|
|
|
276
|
-
####
|
|
278
|
+
#### Deshacer los enlaces
|
|
277
279
|
|
|
278
280
|
```bash
|
|
279
|
-
# ✅ CORRECTO: Linkear ambas librerías en UN SOLO COMANDO
|
|
280
281
|
cd /ruta/a/tu-proyecto
|
|
281
|
-
npm
|
|
282
|
-
|
|
283
|
-
# ❌ INCORRECTO: Linkear por separado (el segundo sobreescribe el primero)
|
|
284
|
-
npm link lf-pagebuilder-vue
|
|
285
|
-
npm link libreria-astro-lefebvre # ¡Esto rompe el link anterior!
|
|
282
|
+
npm unlink lf-pagebuilder-vue libreria-astro-lefebvre
|
|
283
|
+
npm install
|
|
286
284
|
```
|
|
287
285
|
|
|
288
|
-
####
|
|
286
|
+
#### Si algo no funciona
|
|
289
287
|
|
|
290
288
|
```bash
|
|
289
|
+
# Nuclear option: borrar todo y reinstalar
|
|
291
290
|
cd /ruta/a/tu-proyecto
|
|
292
|
-
|
|
291
|
+
rm -rf node_modules package-lock.json
|
|
293
292
|
npm install
|
|
293
|
+
npm link lf-pagebuilder-vue libreria-astro-lefebvre
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
### Watch mode
|
|
299
|
+
|
|
300
|
+
Para que los cambios se reflejen automáticamente mientras desarrollas:
|
|
301
|
+
|
|
302
|
+
```bash
|
|
303
|
+
npm run dev
|
|
294
304
|
```
|
|
295
305
|
|
|
296
|
-
|
|
306
|
+
Esto ejecuta `vite build --watch` y recompila automáticamente cuando hay cambios.
|
|
307
|
+
|
|
308
|
+
> **Nota**: Si usas `package.dev.json` (apuntando a `./src/`), no necesitas watch mode porque los cambios en el código fuente se reflejan directamente.
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
312
|
+
### 📘 Nota para los no familiarizados con npm
|
|
313
|
+
|
|
314
|
+
Este proyecto tiene **dos lugares separados**:
|
|
315
|
+
|
|
316
|
+
#### 1. GitHub (código fuente)
|
|
297
317
|
|
|
298
|
-
|
|
318
|
+
```
|
|
319
|
+
https://github.com/Lefebvre-El-Derecho-SA/lf-pagebuilder-vue
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
Aquí es donde se **edita el código**. Los cambios que hagas aquí NO se reflejan automáticamente en los proyectos que usan el paquete.
|
|
323
|
+
|
|
324
|
+
#### 2. npm (paquete distribuido)
|
|
325
|
+
|
|
326
|
+
```
|
|
327
|
+
https://www.npmjs.com/package/lf-pagebuilder-vue
|
|
328
|
+
```
|
|
299
329
|
|
|
300
|
-
|
|
330
|
+
Aquí es donde las webs **descargan el paquete** cuando hacen `npm install`. Esta versión va **separada de GitHub**.
|
|
331
|
+
|
|
332
|
+
#### ¿Cómo actualizar el paquete en npm?
|
|
333
|
+
|
|
334
|
+
Para que los cambios en GitHub lleguen a npm, hay que **publicar una nueva versión**:
|
|
335
|
+
|
|
336
|
+
1. **Subir la versión** en `package.json` (y en `package.dev.json` y `package.prod.json`)
|
|
337
|
+
|
|
338
|
+
> ⚠️ Si no subes la versión, npm rechazará la publicación.
|
|
339
|
+
|
|
340
|
+
2. **Asegurarte de usar la configuración de producción**:
|
|
341
|
+
```bash
|
|
342
|
+
cp package.prod.json package.json
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
3. **Compilar y publicar**:
|
|
346
|
+
```bash
|
|
347
|
+
npm run build
|
|
348
|
+
npm publish --access public
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
#### Configurar acceso a npm (primera vez)
|
|
352
|
+
|
|
353
|
+
Para poder publicar, necesitas pertenecer a la organización de npm:
|
|
354
|
+
|
|
355
|
+
1. **Solicitar acceso** al equipo `desarrollowebteamlef` en:
|
|
356
|
+
```
|
|
357
|
+
https://www.npmjs.com/settings/desarrollowebteamlef/packages
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
2. **Crear un token de acceso** en npm:
|
|
361
|
+
- Ve a tu perfil de npm → Access Tokens → Generate New Token
|
|
362
|
+
- Selecciona "Bypass 2FA" (si aplica)
|
|
363
|
+
- Pon expiración de 90 días
|
|
364
|
+
- Copia el token generado
|
|
365
|
+
|
|
366
|
+
3. **Configurar el token** en tu máquina:
|
|
367
|
+
|
|
368
|
+
Edita (o crea) el archivo `~/.npmrc`:
|
|
369
|
+
```bash
|
|
370
|
+
# Linux/Mac
|
|
371
|
+
nano ~/.npmrc
|
|
372
|
+
|
|
373
|
+
# Añadir esta línea con tu token:
|
|
374
|
+
//registry.npmjs.org/:_authToken=TU_TOKEN_AQUI
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
4. **Ya puedes publicar**:
|
|
378
|
+
```bash
|
|
379
|
+
npm publish --access public
|
|
380
|
+
```
|