Las variables de entorno son una herramienta esencial en el desarrollo de aplicaciones modernas. Permiten configurar diferentes aspectos de una aplicación sin necesidad de modificar el código fuente. En el contexto de Webpack, las variables de entorno se utilizan para cambiar la configuración de la compilación según el entorno (desarrollo, producción, etc.).
¿Qué son las Variables de Entorno?
Las variables de entorno son pares clave-valor que se pueden utilizar para almacenar información que puede cambiar entre diferentes entornos. Por ejemplo, podrías tener una variable de entorno API_URL
que apunte a una URL diferente en desarrollo y en producción.
Configuración de Variables de Entorno en Webpack
- Uso de
DefinePlugin
DefinePlugin
Webpack proporciona el plugin DefinePlugin
para definir variables globales que pueden ser configuradas en tiempo de compilación. Este plugin reemplaza las variables en el código fuente con los valores especificados.
Ejemplo de Configuración
// webpack.config.js const webpack = require('webpack'); module.exports = { // Otras configuraciones... plugins: [ new webpack.DefinePlugin({ 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV), 'process.env.API_URL': JSON.stringify(process.env.API_URL) }) ] };
En este ejemplo, process.env.NODE_ENV
y process.env.API_URL
se reemplazarán con los valores de las variables de entorno correspondientes.
- Uso de
.env
y dotenv
.env
y dotenv
Para gestionar las variables de entorno de manera más sencilla, puedes utilizar el paquete dotenv
. Este paquete carga las variables de entorno desde un archivo .env
en process.env
.
Instalación
Configuración
Crea un archivo .env
en la raíz de tu proyecto:
Luego, carga estas variables en tu configuración de Webpack:
// webpack.config.js const webpack = require('webpack'); const dotenv = require('dotenv'); // Cargar variables de entorno desde .env dotenv.config(); module.exports = { // Otras configuraciones... plugins: [ new webpack.DefinePlugin({ 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV), 'process.env.API_URL': JSON.stringify(process.env.API_URL) }) ] };
- Uso de
cross-env
para Variables de Entorno en Scripts
cross-env
para Variables de Entorno en ScriptsPara establecer variables de entorno en scripts de npm de manera multiplataforma, puedes utilizar el paquete cross-env
.
Instalación
Configuración
Modifica tus scripts en package.json
para usar cross-env
:
{ "scripts": { "start": "cross-env NODE_ENV=development webpack serve", "build": "cross-env NODE_ENV=production webpack" } }
Ejercicio Práctico
Objetivo
Configurar un proyecto Webpack para utilizar variables de entorno y cambiar la URL de una API según el entorno.
Pasos
-
Instalar Dependencias:
npm install webpack webpack-cli webpack-dev-server dotenv cross-env --save-dev
-
Crear Archivos Necesarios:
webpack.config.js
.env
src/index.js
-
Configurar
webpack.config.js
:const path = require('path'); const webpack = require('webpack'); const dotenv = require('dotenv'); dotenv.config(); module.exports = { entry: './src/index.js', output: { filename: 'bundle.js', path: path.resolve(__dirname, 'dist') }, plugins: [ new webpack.DefinePlugin({ 'process.env.API_URL': JSON.stringify(process.env.API_URL) }) ], devServer: { contentBase: path.join(__dirname, 'dist'), compress: true, port: 9000 } };
-
Configurar
.env
:API_URL=http://localhost:3000/api
-
Crear
src/index.js
:console.log('API URL:', process.env.API_URL);
-
Agregar Scripts en
package.json
:{ "scripts": { "start": "cross-env NODE_ENV=development webpack serve", "build": "cross-env NODE_ENV=production webpack" } }
Solución
Después de seguir los pasos anteriores, ejecuta los siguientes comandos para verificar la configuración:
-
Para desarrollo:
npm start
-
Para producción:
npm run build
Conclusión
En esta sección, aprendiste cómo utilizar variables de entorno en Webpack para configurar tu aplicación según diferentes entornos. Usar DefinePlugin
, dotenv
y cross-env
te permite gestionar estas variables de manera eficiente y mantener tu código limpio y adaptable. En el siguiente módulo, exploraremos herramientas de desarrollo adicionales que pueden mejorar tu flujo de trabajo con Webpack.
Curso de Webpack
Módulo 1: Introducción a Webpack
- ¿Qué es Webpack?
- Configuración de Webpack
- Archivo de Configuración de Webpack
- Compilación Básica de Webpack
Módulo 2: Conceptos Básicos
Módulo 3: Configuración Avanzada
Módulo 4: Herramientas de Desarrollo
Módulo 5: Optimización para Producción
- Minificación
- Optimización de CSS
- Optimización de Imágenes
- Análisis de Paquetes
- Presupuesto de Rendimiento
Módulo 6: Integraciones y Técnicas Avanzadas
- Integración con Babel
- Integración con TypeScript
- Uso de Webpack con React
- Uso de Webpack con Vue
- Plugins y Loaders Personalizados
Módulo 7: Proyectos del Mundo Real
- Configuración de un Proyecto React
- Configuración de un Proyecto Vue
- Configuración de un Proyecto Node.js
- Migración de Proyectos Legados a Webpack