-
Notifications
You must be signed in to change notification settings - Fork 13
/
webpack.txt
764 lines (616 loc) · 23.5 KB
/
webpack.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
=====================
Guía de Webpack by dM
=====================
webpack es un paquete de módulos de JavaScript de código abierto. Está hecho
principalmente para JavaScript, pero puede transformar activos de front-end como
HTML, CSS e imágenes si se incluyen los loaders correspondientes. Webpack toma
módulos con dependencias y genera archivos estáticos que representan esos
módulos.
Webpack toma las dependencias y genera un gráfico de dependencia que permite a
los desarrolladores de la web utilizar un enfoque modular para sus propósitos de
desarrollo de aplicaciones web. Se puede utilizar desde la línea de comandos, o
se puede configurar utilizando un archivo de configuración que se llama
webpack.config.js. Este archivo se utiliza para definir reglas, plugins, etc.
para un proyecto. (webpack es altamente extensible a través de reglas que
permiten a los desarrolladores escribir tareas personalizadas que quieren
realizar cuando se agrupan los archivos).
Node.js es necesario para usar el webpack.
Webpack es un sistema de bundling para preparar el desarrollo de una aplicación
web para producción. En cierta medida se puede considerar un Browserify
(Browserify es una herramienta de JavaScript de código abierto que permite a los
desarrolladores escribir módulos estilo Node.js que se compilan para su uso en
el navegador.) avanzado ya que tiene muchas opciones de configuración.
También se puede considerar una evolución de Grunt y Gulp, ya que permite de
alguna manera automatizar los procesos principales que son transpilar y
preprocesar código de .scss a .css, de ES7 a ES5/6, etc.
Para poder utilizar Webpack en tu proyecto web debes tener instalado Node.js en
tu equipo y con el siguiente comando tendrás Webpack instalado de forma global
en tu equipo (También puedes instalarlo a nivel de proyecto y correrlo con NPM
scripts).
=================================
Instalar webpack de manera global
=================================
Como sugerencia, puedes instalar Webpack de manera global, así estará disponible
en cualquier lugar de tu terminal, aunque luego puedes también deberías instalar
de manera local en el proyecto Webpack para que quede guardado como dependencia
de desarrollo en el package.json y para disponer de la versión adecuada para
cada proyecto.
$ npm install -g webpack webpack-cli
-----
Ver ya ayuda de webpack para saber que comandos y opciónes hay disponibles.
$ webpack --help
-----
Comprobar la versión instalada de webpack
$ webpack --version
webpack 5.39.1
webpack-cli 4.7.2
================================================
Instalar Webpack de manera local, en el proyecto
================================================
============================
Conceptos básicos de Webpack
============================
-Punto de entrada (Entry point): Indica el punto donde Webpack comenzará a
analizar el código de tu aplicación para producir los correspondientes paquetes.
-Punto de salida (Output): Indica dónde se va a producir la salida de Webpack,
es decir, dónde se van a colocar los paquetes generados, ya sea código de los
bundles Javascript, CSS, etc.
-Cargadores (Loaders): Son los sistemas que permiten a Webpack convertir otros
tipos de archivos, aparte de Javascript, o los transpiladores que se necesite
aplicar. En resumen, todo aquello que tenga que realizar modificaciones en la
aplicación se cargará con su correspondiente loader.
-Plugins: Los cargadores permiten realizar transformaciones y los plugins
amplían el rango de funcionalidad a muchas otras tareas que Webpack puede llegar
a desarrollar. Por ejemplo optimizar el código de los paquetes, gestionar y
optimizar imágenes y otros "assets", inyectar variables o código en los archivos
de la aplicación.
=======================================
Punto de inicio y salida predeterminado
=======================================
Si no proveemos a Webpack de archivo de configuración webpack.config.js entiende
que el punto de inicio predeterminado para Javascript es /src/index.js. Él
comenzará a leer todo nuestro Javascript a partir de este archivo, produciendo
un bundle (paquete) con todo el Javascript necesario.
Además Webpack también tiene un punto de salida predeterminado, que es para
Javascript el archivo dist/main.js. Dentro de dicho fichero colocará el bundle
con todo nuestro Javascript.
=========================
Ejemplo de uso de webpack
=========================
Recuerda que para usar Webpack necesitas iniciar tu proyecto con npm y luego
instalar el propio Webpack, como dependencia de desarrollo, en local. Esto lo
consigues ejecutando los siguientes comandos de terminal, desde el directorio
raíz de tu proyecto.
$ mkdir prueba
$ cd prueba
$ npm init
Este comando nos pedirá una serie de datos acerca de nuestro proyecto, los
cuales dejaremos por defecto dando enter cada vez y una vez finalizado creará el
archivo package.json que debe quedar así:
{
"name": "webpack-example-3",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
El archivo package.json es el responsable de almacenar el nombre de las
dependencias instaladas catalogándolas principalmente en dos tipos: dependencias
de desarrollo y dependencias de la aplicación.
Lo siguiente será instalar unas librerías de desarrollo que van a permitir usar
webpack con el siguiente comando:
$ npm i -D webpack webpack-cli webpack-dev-server babel-loader babel-cli
webpack: Para tener funcionando webpack.
webpack-dev-server: Para crear un servidor de desarrollo desde el fichero de
configuración.
-D: Configurara las dependencias como de desarrollo.
babel-loader: Es un loader o cargador que es el que permite pues dependiendo
del tipo de archivo que estemos utilizando, cargar, entender y hacer las
compilaciones necesarias de los archivos del proyecto. En este caso se usara
Babel ya que en el ejemplo se usara ecmascript 6.
-babel-cli: Instala el núcleo de babel que es un compilador de JavaScript.
Al final ded la instalación del comando, nos quedara creada una carpeta
node_modules que es donde se guardan los paquetes de node instalados y nuestro
package.json quedará así:
{
"name": "prueba",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-loader": "^8.2.2",
"webpack": "^5.39.1",
"webpack-cli": "^4.7.2"
}
}
Ahora vamos a crear un fichero con nombre webpack.config.js en la raíz del
directorio.
Este fichero va a ser el que va a tomar webpack para ver que funcionaes y que
configuraciones debe ejecutar.
El contenido de nuestro fichero sería:
// Con la primera línea estamos trayendo un módulo llamado "path" que forma parte
// de NodeJS, que nos sirve para trabajar con archivos y rutas de directorios. Los
// módulos en NodeJS sirven para ordenar el código. Cada archivo Javascript es un
// módulo, que puede importar código de otros módulos y exportar código de este
// módulo hacia afuera. Require es la sentencia que se usa para importar un módulo
// y 'path' es el nombre del módulo que deseamos importar. Dicho módulo se almacena
// en una constante llamada "path".
const path = require('path');
// Con "module.exports" estamos exportando hacia afuera código Javascript. Todo
el código que esté dentro de exports se podrá usar fuera del archivo/módulo que
estamos programando.
module.exports = {
context: __dirname,
// Este es el punto de entrada de la aplicación y le indicamos cual es la ruta
// al archivo principal.
entry: {
app: ['./src/index.js']
},
// Acá indicamos cual será el fichero ya generado luego de la compilación.
output: {
// Indicamos la carpeta destino.
// __dirname equivale en NodeJS al directorio del disco duro donde está
// situado nuestro módulo, en el que estamos programando.
path: path.resolve(__dirname, 'src'),
// El nombre que va a tener el fichero destino con el código empaquetado.
filename: 'bundle.js',
// Directorio publico del archivo.
publicPath: '/src/'
},
// Indicamos que tipos de ficheros son los que tendrá en cuenta webpack.
resolve: {
extensions: ['', '.js', '.jsx']
},
// Rules indica que transformaciones o compilaciones queremos que haga.
module: {
rules: [
{
// Indicamos con una expresión regular que tenga en cuenta los .js y .jsx
test: /(\.js|.jsx)$/,
// y le aplique el loader babel.
loader: 'babel-loader',
exclude: '/node_modules/',
}
]
}
}
y sin comentarios, en limpio sería:
const path = require('path');
module.exports = {
context: __dirname,
entry: {
app: ['./src/index.js']
},
output: {
path: path.resolve(__dirname, 'src'),
filename: 'bundle.js',
publicPath: '/src/'
},
resolve: {
extensions: ['', '.js', '.jsx']
},
module: {
rules: [
{
test: /(\.js|.jsx)$/,
loader: 'babel-loader',
exclude: '/node_modules/',
}
]
}
}
Ahora vamos a editar package.json y vamos a definir un npm scripts como build
que se ejecutaría con el comando npm run build:
"build": "webpack --watch --color"
Este comando llama a webpack, con --watch le decimos que vigile los cambios en
vivo que haya en la aplicación y con --color se ve mas bonito en la consola la
salida y permite compilar o empaquetizar nuestra aplicación, teniendo en cuanta
todo lo que hemos puesto en la configuración.
El fichero quedaría así:
{
"name": "prueba",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack --watch --color"
},
"author": "",
"license": "ISC",
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-loader": "^8.2.2",
"webpack": "^5.39.1",
"webpack-cli": "^4.7.2"
}
}
Ahora creamos el directorio "src" y dentro creamos a index.js que contrendra el
código js de nuestra aplicación básica, ejemplo:
alert("Hello world 1!");
alert("Hello world 2!");
alert("Hello world 3!");
alert("Hello world 4!");
Y también crearemos a bundle.js que será el paquete donde nuestro código de
index.js será comprimido. las rutas a estos archivos ya fueron configuradas en
webpack.config.js, este se creara por defecto también, no hace falta crearlo.
Luego de realizar todo nuestro directorio debería quedar así
/prueba
/src
bundle.js
index.js
/node_modules
package.json
package-lock.json
webpack.config.js
Ahora si podemos ejecutar el comando build que configuramos en package.json
$ npm run build
Esto nos muestra por pantalla:
> prueba@1.0.0 build
> webpack --watch --color
asset bundle.js 96 bytes [compared for emit] [minimized] (name: app)
./src/index.js 99 bytes [built] [code generated]
webpack 5.39.1 compiled with 1 warning in 1231 ms
Y listo, esto quiere decir que nuestro código fue empaquetado correctamente en
bundle.js, si revisamos el fichero veremos:
alert("Hello world 1!"),alert("Hello world 2!"),alert("Hello world 3!"),alert("Hello world 4!");
==============================
Otro ejemplo de uso de webpack
==============================
En este ejemplo haremos un pequeño codigo que llama a otra librería de js,
mediante la importación de modulos y también haremos el fichero de configuracíón
de webpack para poder ver de manera rapida como se pueder tener un proyecto
con webpack integrado.
Lo primero de todo es crear un directorio llamado "webpack-example"
Luego accedemos a este directorio y vamos a generar una estructura de proyecto
con node con el siguiente comando
$ npm init
Este comando nos pedirá una serie de datos acerca de nuestro proyecto, los
cuales dejaremos por defecto dando enter cada vez y una vez finalizado creará el
archivo package.json que debe quedar así:
{
"name": "webpack-example-3",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
El archivo package.json es el responsable de almacenar el nombre de las
dependencias instaladas catalogándolas principalmente en dos tipos: dependencias
de desarrollo y dependencias de la aplicación.
Lo siguiente será instalar unas librerías de desarrollo que van a permitir usar
webpack con el siguiente comando:
$ npm i -D webpack webpack-cli webpack-dev-server babel-loader babel-cli babel-preset-es2015
webpack: Para tener funcionando webpack.
webpack-dev-server: Para crear un servidor de desarrollo desde el fichero de
configuración.
-D: Configurara las dependencias como de desarrollo.
babel-loader: Es un loader o cargador que es el que permite pues dependiendo
del tipo de archivo que estemos utilizando, cargar, entender y hacer las
compilaciones necesarias de los archivos del proyecto. En este caso se usara
Babel ya que en el ejemplo se usara ecmascript 6.
-babel-cli: Instala el núcleo de babel que es un compilador de JavaScript.
babel-preset-es2015: Es un preset de babel que permite compatibilidad con los
diferentes navegadores.
Al final ded la instalación del comando, nos quedara creada una carpeta
node_modules que es donde se guardan los paquetes de node instalados y nuestro
pakhage.json quedará así:
{
"name": "webpack-example-3",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-loader": "^8.2.2",
"babel-preset-es2015": "^6.24.1",
"webpack": "^5.39.1",
"webpack-cli": "^4.7.2",
"webpack-dev-server": "^3.11.2"
}
}
Ahora vamos a crear un fichero con nombre webpack.config.js en la raíz del
directorio.
Este fichero va a ser el que va a tomar webpack para ver que funcionaes y que
configuraciones debe ejecutar.
El contenido de nuestro fichero comentado sería:
const path = require('path');
// Este fichero exporta un modulo con la directiva module.exports que es un
// objeto de js.
module.exports = {
mode: 'development',
// Este es el punto de entrada de la aplicación y le indicamos cual es la ruta
// al archivo principal
context: __dirname,
entry: {
app: ['./src/index.js']
},
output: {
// Acá indicamos cual será el fichero ya generado luego de la compilación.
path: path.resolve(__dirname, 'build'),
// El nombre que va a tener el fichero destino.
filename: 'bundle.js',
// Directorio publico que llamaremos desde el html.
publicPath: '/build/'
},
resolve: {
// Indicamos que tipos de ficheros son los que tendrá en cuenta webpack.
extensions: ['', '.js', '.jsx']
},
// Como está instalado webpack-dev-server se puede crear una configuración
// para ejecutar el servidor de desarrollo.
devServer: {
contentBase: path.join(__dirname, 'build'),
compress: true,
port: 9000,
},
module: {
// Rules indica que transformaciones o compilaciones queremos que haga.
// Indicamos con una expresión regular que tenga en cuenta los .js y .jsx
// y le aplique el loader babel.
rules: [
{
// Indicamos con una expresión regular que tenga en cuenta los .js y .jsx
test: /(\.js|.jsx)$/,
// y le aplique el loader babel.
loader: 'babel-loader',
// Excluímos de la compilación la carpeta node_modules.
exclude: '/node_modules/',
}
]
}
}
y en limpio sin comentarios sería:
const path = require('path');
module.exports = {
mode: 'development',
context: __dirname,
entry: {
app: ['./src/index.js']
},
output: {
path: path.resolve(__dirname, 'build'),
filename: 'bundle.js',
publicPath: '/build/'
},
resolve: {
extensions: ['', '.js', '.jsx']
},
devServer: {
contentBase: path.join(__dirname, 'build'),
compress: true,
port: 9000,
},
module: {
rules: [
{
test: /(\.js|.jsx)$/,
loader: 'babel-loader',
exclude: '/node_modules/',
}
]
}
}
Ahora vamos a editar package.json y vamos a definir unos npm scripts como build
que se ejecutaría con el comando npm run build:
"build": "webpack --watch --color",
Este comando llama a webpack, con --watch le decimos que vigile los cambios en
vivo que haya en la aplicación y con --color se ve mas bonito en la consola la
salida y permite compilar o empaquetizar nuestra aplicación, teniendo en cuanta
todo lo que hemos puesto en la configuración.
Otro npm script es start que se ejecutaría con npm start
"start": "webpack serve --open"
Esto permite correr el servidor de desarrollo en http://localhost:9000/ según lo
qeu se configuro en el objeto devServer en webpack.config.js.
Con esto ya terminaría la edición de package.json que debería quedar así:
{
"name": "webpack-example-3",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"build": "webpack --watch --color",
"start": "webpack-dev-server --progress --color"
},
"author": "",
"license": "ISC",
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-loader": "^8.2.2",
"babel-preset-es2015": "^6.24.1",
"webpack": "^5.39.1",
"webpack-cli": "^4.7.2",
"webpack-dev-server": "^3.11.2"
},
"dependencies": {
"babel": "^6.23.0"
}
}
Ahora creamos una carpeta llamada "build" en la raíz del proyecto, que va a ser
donde se va a generar nuestro fichero de salida de javascript.
Ahora necesitamos un archivo .html para poder ver los resultados, para poder
llamar el el cogigo que está empaquetado, entonces creamos un archivo index.html
dentro de la carpeta build. En el body declaramos una etiqueta script que apunte
al fichero que será generado que es bundle.js.
Nuestro html quedaría así:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div id="app"></div>
<script src="/build/bundle.js"></script>
</body>
</html>
Ahora vamos a crear una carpeta "src" en la raíz del proyecto y dentro vamos a
crear un fichero index.js
En este fichero usaremos ecmascript 6, declaramos la importación de un modulo
llamado persona que aún no hemos creado y que estara en el fichero persona
Luego declaramos una variable llamada carlos que va a ser un new Persona con
nombre carlos, y por último hacemos uso de una función saluda.
El index.js quearía así:
import Persona from './persona'
const carlos = new Persona('Carlos')
carlos.saluda()
Ahora vamos a crear a persona.js dentro de la carpetea "src" donde vamos a crear
una clase que la vamos a exportar por defecto, el constructor va a recibir el
nombre y va a tener un metodo saluda que va a mostrar un alert cuando se haga
uso de el.
El fichero quedaría así:
export default class Persona {
constructor (nombre) {
this.nombre = nombre
}
saluda () {
alert(`Hola! Soy ${this.nombre}`)
}
}
Listo, ahora vamos a ejecutar el comando de compilación que agrupa la aplicación
en archivos estáticos para producción.
$ npm run build
> webpack-example-3@1.0.0 build
> webpack --watch --color
asset bundle.js 4.25 KiB [compared for emit] (name: app)
runtime modules 670 bytes 3 modules
cacheable modules 231 bytes
./src/index.js 87 bytes [built] [code generated]
./src/persona.js 144 bytes [built] [code generated]
webpack 5.39.1 compiled successfully in 1249 ms
y luego:
$ npm run start
Esto nos abre el archivo index.html en el navegador, desde la url
http://localhost:9000/ y veremos una alerta según declaramos en nuestro código.
Fuentes
=======
-https://www.youtube.com/watch?v=2M5L_uz6GO0&t=160s
-https://desarrolloweb.com/articulos/primeros-pasos-webpack.html
-https://webpack.js.org/configuration/dev-server/
-https://webpack.js.org/guides/development/
=============
CSS y webpack
=============
1) Instalar los loaders a utilizar, que son:
-css-loader: Para interpretar nuestro código CSS.
-style-loader: Inyecta CSS en el DOM.
$ npm install --save-dev css-loader style-loader
2) Crear index.css en src/index.css y agregar el siguiente contenido:
body {
background: gray;
color: red;
}
3) En index.js que es el archivo principal, vamos a llamar a index.css,
Recordemos que en Webpack se trabaja con un punto de entrada, que es un archivo
Javascript. Webpack analiza el código de este archivo JS para producir los
correspondientes bundles de código. En el caso que nos ocupa, el procesamiento
del CSS, Webpack necesita encontrar el código CSS a partir del punto de entrada.
Por tanto, aunque parezca un poco raro, dentro de nuestro Javascript tendremos
que hacer el import del código CSS.
El contenido quedaría:
import "./index.css";
var nombre;
nombre="David";
document.write(nombre);
4) Editar el webpack.config.js, quedaría así:
const path = require('path');
module.exports = {
context: __dirname,
entry: {
app: ['./src/index.js']
},
output: {
path: path.resolve(__dirname, 'src'),
filename: 'bundle.js',
publicPath: '/src/'
},
resolve: {
extensions: ['', '.js', '.jsx']
},
module: {
rules: [
{
test: /(\.js|.jsx)$/,
loader: 'babel-loader',
exclude: '/node_modules/',
},
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
}
5) Y ahora el index.html quedaría así:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script src="bundle.js" type="text/javascript"></script>
</body>
</html>
6) Compilamos con:
$ npm run build
y nuestro estilo estara compilado en bundle.js y luego chequeamos nuestros
estilos en el navegador examinando index.js.
==========================================================
Introducción a los mapas fuente de JavaScript o sourcemaps
==========================================================
¿Alguna vez deseaste poder mantener el código del lado del cliente legible y, lo
que es más importante, depurable incluso después de haberlo combinado y
minimizado, sin afectar el rendimiento? Pues ahora puedes gracias a la magia de
los mapas de origen.
Básicamente, es una forma de mapear un archivo combinado/minificado a un estado
no construido. Cuando se compila y construye para la producción, además de
minimizar y combinar sus archivos JavaScript, genera un mapa de origen que
contiene información sobre sus archivos originales. Cuando consulta un
determinado número de línea y columna en su JavaScript generado, puede realizar
una búsqueda en el mapa de origen que devuelve la ubicación original. Las
herramientas de desarrollo (actualmente compilaciones nocturnas de WebKit,
Google Chrome o Firefox) pueden analizar el mapa de origen automáticamente y
hacer que parezca que está ejecutando archivos sin minimizar ni combinar.
Algunos proyectos que usen vue, pueden quejarse porque intentan buscar el
archivo .map y este les da error, es por eso que esto se soluciona acompañando
la librería a usar con su respectivo archivo de mapa fuente, ejemplo:
popper.min.js
popper.min.js.map
Cuando se está usando una librería que se gestiona con node, y se está usando
webpack, la solución puede ser agregar el método sourceMaps() en el archivo de
configuración de webpack.mix.js, tal que:
mix.js('resources/js/app.js', 'public/js')
.vue()
.sass('resources/sass/app.scss', 'public/css')
.sourceMaps();
=================================================
Si el sistema redirecciona la url a popper.js.map
=================================================
ir a webpack.mix.js y agragrar .sourceMaps() tal que:
mix.js('resources/js/app.js', 'public/js')
.sourceMaps()
.vue()
.sass('resources/sass/app.scss', 'public/css');