Els mapes de fonts (source maps) són una eina essencial per a la depuració de codi en aplicacions web modernes. Permeten als desenvolupadors veure el codi original, abans de ser transformat per Webpack, en les eines de desenvolupament del navegador. Això és especialment útil quan es treballa amb codi minificat o transformat (per exemple, codi JavaScript transpilat des de TypeScript o Babel).
Què són els Mapes de Fonts?
Els mapes de fonts són fitxers que mapegen el codi transformat (com el codi minificat o transpilat) al codi original. Això permet que les eines de desenvolupament del navegador mostrin el codi original en lloc del codi transformat, facilitant la depuració.
Beneficis dels Mapes de Fonts:
- Depuració més fàcil: Permeten veure el codi original en les eines de desenvolupament del navegador.
- Millor traçabilitat: Faciliten la identificació de l'origen dels errors.
- Millor experiència de desenvolupament: Fan que el procés de depuració sigui més intuïtiu i eficient.
Configuració de Mapes de Fonts en Webpack
Per habilitar els mapes de fonts en Webpack, cal configurar l'opció devtool
en el fitxer de configuració de Webpack (webpack.config.js
).
Exemple de Configuració
// webpack.config.js module.exports = { mode: 'development', // o 'production' entry: './src/index.js', output: { filename: 'bundle.js', path: __dirname + '/dist' }, devtool: 'source-map', // Habilita els mapes de fonts module: { rules: [ { test: /\.js$/, exclude: /node_modules/, use: { loader: 'babel-loader', options: { presets: ['@babel/preset-env'] } } } ] } };
Opcions de devtool
Webpack ofereix diverses opcions per a devtool
, cadascuna amb diferents nivells de precisió i velocitat. A continuació es mostra una taula amb algunes de les opcions més comunes:
Opció | Descripció | Velocitat de Compilació | Qualitat del Mapa de Fonts |
---|---|---|---|
eval |
Cada mòdul és avaluat amb eval() i es genera un mapa de fonts per mòdul. |
Molt ràpida | Baixa |
source-map |
Genera un fitxer .map separat per al mapa de fonts. |
Lenta | Alta |
cheap-source-map |
Genera un fitxer .map separat, però sense column mappings. |
Ràpida | Mitjana |
inline-source-map |
Inclou el mapa de fonts com a data URL dins del fitxer de sortida. | Lenta | Alta |
cheap-module-source-map |
Similar a cheap-source-map , però també inclou loaders. |
Ràpida | Mitjana |
Exercici Pràctic
Objectiu
Configurar un projecte Webpack per utilitzar mapes de fonts i verificar el seu funcionament en les eines de desenvolupament del navegador.
Passos
-
Crea un projecte nou:
mkdir webpack-source-maps cd webpack-source-maps npm init -y npm install webpack webpack-cli babel-loader @babel/core @babel/preset-env --save-dev
-
Crea l'estructura de fitxers:
mkdir src touch src/index.js webpack.config.js
-
Configura Babel i Webpack:
-
webpack.config.js
:const path = require('path'); module.exports = { mode: 'development', entry: './src/index.js', output: { filename: 'bundle.js', path: path.resolve(__dirname, 'dist') }, devtool: 'source-map', module: { rules: [ { test: /\.js$/, exclude: /node_modules/, use: { loader: 'babel-loader', options: { presets: ['@babel/preset-env'] } } } ] } };
-
.babelrc
:{ "presets": ["@babel/preset-env"] }
-
-
Escriu codi JavaScript:
src/index.js
:const greet = (name) => { console.log(`Hello, ${name}!`); }; greet('World');
-
Construeix el projecte:
npx webpack
-
Verifica els mapes de fonts:
- Obre
dist/index.html
en un navegador. - Obre les eines de desenvolupament (F12 o clic dret -> "Inspect").
- Navega a la pestanya "Sources" i verifica que pots veure el codi original en lloc del codi transformat.
- Obre
Conclusió
Els mapes de fonts són una eina poderosa per a la depuració de codi en aplicacions web modernes. Configurar-los en Webpack és senzill i pot millorar significativament l'experiència de desenvolupament. Amb aquesta configuració, els desenvolupadors poden veure i depurar el codi original, facilitant la identificació i resolució d'errors.
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