La depuració és una part essencial del desenvolupament de programari, ja que permet identificar i corregir errors en el codi. En aquest tema, aprendrem com utilitzar les eines de depuració amb Webpack per facilitar aquest procés.
Conceptes Clau
- Mapes de Fonts (Source Maps): Permeten mapar el codi transformat (per exemple, minificat o transpilat) al codi original, facilitant la depuració.
- Configuració de Webpack per a la Depuració: Ajustos específics en el fitxer de configuració de Webpack per habilitar la depuració.
- Eines de Navegador: Utilització de les eines de desenvolupador del navegador per depurar aplicacions Webpack.
Mapes de Fonts (Source Maps)
Els mapes de fonts són fitxers que permeten mapar el codi transformat al codi original. Això és especialment útil quan es treballa amb codi transpilat (per exemple, TypeScript o Babel) o minificat.
Configuració de Mapes de Fonts
Per habilitar els mapes de fonts en Webpack, cal afegir la propietat devtool
al fitxer de configuració de Webpack (webpack.config.js
).
Tipus de Mapes de Fonts
Hi ha diversos tipus de mapes de fonts que es poden utilitzar, cadascun amb els seus avantatges i inconvenients:
Tipus | Descripció | Velocitat de Compilació | Qualitat de Depuració |
---|---|---|---|
eval |
Cada mòdul és avaluat amb eval() i es inclou un mapa de fonts inline. |
Molt ràpid | Baixa |
source-map |
Genera un fitxer .map separat. |
Lenta | Alta |
cheap-source-map |
Genera un fitxer .map separat sense column mappings. |
Ràpida | Mitjana |
inline-source-map |
Inclou el mapa de fonts com un DataUrl dins del fitxer generat. | Lenta | Alta |
cheap-module-source-map |
Similar a cheap-source-map , però també inclou loaders. |
Ràpida | Mitjana |
Configuració de Webpack per a la Depuració
A més de configurar els mapes de fonts, hi ha altres ajustos que poden ajudar en la depuració.
Exemple de Configuració Completa
const path = require('path'); module.exports = { entry: './src/index.js', output: { filename: 'bundle.js', path: path.resolve(__dirname, 'dist'), }, devtool: 'source-map', // Habilita els mapes de fonts mode: 'development', // Mode desenvolupament per facilitar la depuració module: { rules: [ { test: /\.js$/, exclude: /node_modules/, use: { loader: 'babel-loader', }, }, ], }, };
Eines de Navegador
Les eines de desenvolupador del navegador són essencials per a la depuració. A continuació, es mostren alguns consells per utilitzar-les amb Webpack.
Google Chrome DevTools
- Obrir DevTools: Premeu
F12
oCtrl+Shift+I
(Windows/Linux) oCmd+Opt+I
(Mac). - Pestanya "Sources": Aquí podeu veure el codi font original gràcies als mapes de fonts.
- Punts de Trencament (Breakpoints): Podeu establir punts de trencament per aturar l'execució del codi en línies específiques.
- Consola: Utilitzeu la consola per executar codi JavaScript i veure missatges de registre (
console.log
).
Firefox Developer Tools
- Obrir Developer Tools: Premeu
F12
oCtrl+Shift+I
(Windows/Linux) oCmd+Opt+I
(Mac). - Pestanya "Debugger": Similar a la pestanya "Sources" de Chrome, permet veure el codi font original.
- Punts de Trencament: Establiu punts de trencament per aturar l'execució del codi.
- Consola: Executeu codi JavaScript i vegeu missatges de registre.
Exercici Pràctic
Objectiu
Configurar un projecte Webpack per habilitar la depuració amb mapes de fonts i utilitzar les eines de desenvolupador del navegador per depurar un error.
Passos
-
Configura Webpack:
- Crea un fitxer
webpack.config.js
amb la configuració següent:
const path = require('path'); module.exports = { entry: './src/index.js', output: { filename: 'bundle.js', path: path.resolve(__dirname, 'dist'), }, devtool: 'source-map', mode: 'development', module: { rules: [ { test: /\.js$/, exclude: /node_modules/, use: { loader: 'babel-loader', }, }, ], }, };
- Crea un fitxer
-
Crea un fitxer
index.js
a la carpetasrc
amb el codi següent:function add(a, b) { return a + b; } console.log(add(2, 3)); // Correcte console.log(add(2, '3')); // Error: resultat inesperat
-
Compila el projecte:
- Executa
npx webpack
per generar el fitxerbundle.js
amb el mapa de fonts.
- Executa
-
Obre el fitxer
index.html
al navegador i obre les eines de desenvolupador. -
Depura l'error:
- A la pestanya "Sources" (Chrome) o "Debugger" (Firefox), localitza el fitxer
index.js
. - Estableix un punt de trencament a la línia
console.log(add(2, '3'));
. - Recarrega la pàgina i observa com s'atura l'execució en el punt de trencament.
- Inspecciona les variables
a
ib
per entendre per què es produeix l'error.
- A la pestanya "Sources" (Chrome) o "Debugger" (Firefox), localitza el fitxer
Solució
L'error es produeix perquè la funció add
no valida els tipus dels seus arguments. Una possible solució és assegurar-se que els arguments siguin nombres:
function add(a, b) { if (typeof a !== 'number' || typeof b !== 'number') { throw new Error('Els arguments han de ser nombres'); } return a + b; } console.log(add(2, 3)); // Correcte console.log(add(2, '3')); // Error: Els arguments han de ser nombres
Resum
En aquesta secció, hem après com configurar Webpack per habilitar la depuració mitjançant mapes de fonts i com utilitzar les eines de desenvolupador del navegador per depurar el codi. La depuració és una habilitat essencial per a qualsevol desenvolupador, i amb les eines adequades, es pot fer de manera més eficient i efectiva.
Curs de Webpack
Mòdul 1: Introducció a Webpack
- Què és Webpack?
- Configuració de Webpack
- Fitxer de Configuració de Webpack
- Construcció Bàsica amb Webpack
Mòdul 2: Conceptes Bàsics
Mòdul 3: Configuració Avançada
Mòdul 4: Eines de Desenvolupament
Mòdul 5: Optimització per a Producció
Mòdul 6: Integracions i Tècniques Avançades
- Integració amb Babel
- Integració amb TypeScript
- Ús de Webpack amb React
- Ús de Webpack amb Vue
- Plugins i Loaders Personalitzats
Mòdul 7: Projectes del Món Real
- Configuració d'un Projecte React
- Configuració d'un Projecte Vue
- Configuració d'un Projecte Node.js
- Migració de Projectes Heretats a Webpack