Preparar un proyecto de React para que funcione tanto en modo desarrollo como en modo producción requiere separar las configuraciones de webpack en archivos independientes y aplicar optimizaciones específicas. Aquí se explica paso a paso cómo crear ambas configuraciones, instalar los plugins necesarios y verificar que todo funcione correctamente.
¿Cómo crear la configuración de desarrollo en webpack?
El primer paso es crear un archivo llamado webpack.config.dev.js [00:18]. Se toma como base la configuración principal del proyecto y se copia en este nuevo archivo. La diferencia clave está en la sección devServer, donde se definen tres propiedades fundamentales:
- contentBase: utiliza
path.join(__dirname, 'dist') para indicar dónde se encuentra el contenido del proyecto [00:35].
- compress: se establece en
true para activar la compresión del proyecto durante el desarrollo [00:55].
- port: se asigna el puerto 3005, en lugar del puerto por defecto que suele ser 3000 u 8080 [01:01].
Con estas tres líneas, la configuración de desarrollo queda lista para servir el proyecto localmente con recarga automática.
¿Qué plugins se necesitan para optimizar la configuración de producción?
Para la configuración de producción se requieren tres plugins que se encargan de optimizar y limpiar el proyecto antes del despliegue [01:15]:
- terser-webpack-plugin: optimiza y minimiza el código JavaScript.
- clean-webpack-plugin: limpia la carpeta
dist cada vez que se genera un nuevo build, evitando archivos residuales.
- css-minimizer-webpack-plugin: minifica los archivos CSS para reducir su peso.
La instalación se realiza con un solo comando en la terminal [01:40]:
bash
npm install terser-webpack-plugin clean-webpack-plugin css-minimizer-webpack-plugin -D
La bandera -D indica que son dependencias de desarrollo, ya que solo se utilizan durante el proceso de construcción.
¿Cómo se integran los plugins en la configuración?
Una vez instalados, se importan en el archivo de configuración de producción mediante require [02:10]:
javascript
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
const TerserPlugin = require('terser-webpack-plugin');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
Dentro de la sección plugins, se crea una nueva instancia de CleanWebpackPlugin sin parámetros adicionales [03:05]:
javascript
plugins: [
new CleanWebpackPlugin(),
]
¿Cómo se configura la sección de optimization?
Se agrega un bloque llamado optimization donde se activan las opciones de minimización [03:15]:
javascript
optimization: {
minimize: true,
minimizer: [
new CssMinimizerPlugin(),
new TerserPlugin(),
],
}
Este arreglo dentro de minimizer recibe las instancias de los plugins que se encargan de comprimir tanto el CSS como el JavaScript. Esta misma estrategia se aplica en proyectos puros de webpack y ahora se traslada al proyecto con React [03:40].
¿Cómo se actualizan los scripts en package.json?
Para que cada comando utilice la configuración correcta, se modifican los scripts en el archivo package.json [03:55]:
{
"scripts": {
"build": "webpack --mode production --config webpack.config.js",
"start": "webpack serve --open --mode development --config webpack.config.dev.js"
}
}
- El script build ejecuta webpack en modo producción con la bandera
--config apuntando a webpack.config.js.
- El script start levanta el servidor de desarrollo usando
webpack serve --open y apunta a webpack.config.dev.js.
Al ejecutar npm run start, el proyecto se abre automáticamente en el puerto 3005 configurado previamente [04:25]. Al ejecutar npm run build, webpack genera el bundle optimizado dentro de la carpeta dist, donde se puede verificar que el JavaScript está minimizado y el CSS comprimido [04:50].
Estas optimizaciones son esenciales para que el proyecto funcione de forma eficiente en producción. ¿Ya aplicas estas separaciones de configuración en tus proyectos? Comparte tu experiencia y dudas en los comentarios.