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.resolveper 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,appivendor.filename: Utilitzem[name].[chunkhash].jsper generar noms de fitxers comapp.abc123.jsivendor.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.resolveper 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.jsi 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].jscom a nom de fitxer. - Defineix dos punts d'entrada:
appivendor.
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
