En aquest tema, aprendrem com configurar la sortida de Webpack. La configuració de sortida és crucial perquè defineix com i on es generaran els fitxers compilats per Webpack. Això inclou el nom dels fitxers, el directori de sortida i altres opcions relacionades.
Objectius
- Entendre la configuració bàsica de sortida en Webpack.
- Aprendre a personalitzar el nom dels fitxers de sortida.
- Configurar el directori de sortida.
- Utilitzar plantilles de noms per a una millor gestió dels fitxers.
Configuració Bàsica de Sortida
La configuració de sortida es defineix a l'objecte output
del fitxer de configuració de Webpack (webpack.config.js
). Aquí teniu un exemple bàsic:
const path = require('path'); module.exports = { entry: './src/index.js', output: { filename: 'bundle.js', path: path.resolve(__dirname, 'dist') } };
Explicació del Codi
filename
: Defineix el nom del fitxer de sortida. En aquest cas, seràbundle.js
.path
: Defineix el directori on es guardarà el fitxer de sortida. Utilitzempath.resolve
per obtenir una ruta absoluta al directoridist
.
Personalització del Nom dels Fitxers
Podem utilitzar plantilles de noms per personalitzar els noms dels fitxers de sortida. Això és especialment útil quan treballem amb múltiples punts d'entrada o quan volem incloure hash per a la gestió de caché.
Exemples de Plantilles de Noms
[name]
: El nom del punt d'entrada.[hash]
: Un hash generat per Webpack.[chunkhash]
: Un hash basat en el contingut del chunk.
const path = require('path'); module.exports = { entry: { app: './src/app.js', vendor: './src/vendor.js' }, output: { filename: '[name].[chunkhash].js', path: path.resolve(__dirname, 'dist') } };
Explicació del Codi
entry
: Definim dos punts d'entrada,app
ivendor
.filename
: Utilitzem[name].[chunkhash].js
per generar noms de fitxers comapp.abc123.js
ivendor.def456.js
.
Configuració del Directori de Sortida
El directori de sortida es defineix amb la propietat path
. És important utilitzar una ruta absoluta per evitar errors.
const path = require('path'); module.exports = { entry: './src/index.js', output: { filename: 'bundle.js', path: path.resolve(__dirname, 'dist') } };
Explicació del Codi
path.resolve(__dirname, 'dist')
: Utilitzempath.resolve
per obtenir una ruta absoluta al directoridist
.
Exemples Pràctics
Exemple 1: Configuració Bàsica
const path = require('path'); module.exports = { entry: './src/index.js', output: { filename: 'bundle.js', path: path.resolve(__dirname, 'dist') } };
Exemple 2: Utilitzant Plantilles de Noms
const path = require('path'); module.exports = { entry: { main: './src/main.js', vendor: './src/vendor.js' }, output: { filename: '[name].[contenthash].js', path: path.resolve(__dirname, 'dist') } };
Exemple 3: Configuració Avançada
const path = require('path'); module.exports = { entry: './src/index.js', output: { filename: '[name].[chunkhash].js', path: path.resolve(__dirname, 'dist'), publicPath: '/assets/' } };
Explicació del Codi
publicPath
: Defineix el prefix URL per a tots els recursos de sortida. Això és útil quan els fitxers es serveixen des d'un servidor diferent o un CDN.
Exercicis Pràctics
Exercici 1: Configuració Bàsica
- Crea un fitxer
webpack.config.js
. - Defineix un punt d'entrada
./src/index.js
. - Configura la sortida perquè el fitxer generat es digui
main.js
i es guardi al directoribuild
.
Solució
const path = require('path'); module.exports = { entry: './src/index.js', output: { filename: 'main.js', path: path.resolve(__dirname, 'build') } };
Exercici 2: Utilitzant Plantilles de Noms
- Modifica la configuració anterior per utilitzar
[name].[hash].js
com a nom de fitxer. - Defineix dos punts d'entrada:
app
ivendor
.
Solució
const path = require('path'); module.exports = { entry: { app: './src/app.js', vendor: './src/vendor.js' }, output: { filename: '[name].[hash].js', path: path.resolve(__dirname, 'build') } };
Resum
En aquesta secció, hem après com configurar la sortida de Webpack. Hem vist com definir el nom dels fitxers de sortida, el directori de sortida i com utilitzar plantilles de noms per a una millor gestió dels fitxers. També hem practicat amb alguns exemples i exercicis per reforçar els conceptes apresos.
En el següent tema, explorarem els Loaders
, que ens permeten transformar fitxers de diferents tipus abans d'incloure'ls en el bundle final.
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