Introducción
En Webpack, los puntos de entrada (entry points) son el punto de inicio desde donde Webpack comienza a construir su grafo de dependencias. Esencialmente, le indican a Webpack cuál archivo o archivos debe usar para comenzar a empaquetar su aplicación.
Conceptos Clave
- Punto de Entrada Único: Un solo archivo de entrada desde el cual Webpack comienza a construir el grafo de dependencias.
- Múltiples Puntos de Entrada: Varios archivos de entrada que Webpack utiliza para crear múltiples paquetes.
- Objeto de Puntos de Entrada: Un objeto que define múltiples puntos de entrada con nombres específicos.
Configuración de Puntos de Entrada
Punto de Entrada Único
Para configurar un punto de entrada único, se define una propiedad entry
en el archivo de configuración de Webpack (webpack.config.js
).
// webpack.config.js module.exports = { entry: './src/index.js', output: { filename: 'bundle.js', path: __dirname + '/dist' } };
En este ejemplo:
entry
: Especifica el archivo de entrada (./src/index.js
).output
: Define el nombre del archivo de salida (bundle.js
) y la ruta donde se guardará (/dist
).
Múltiples Puntos de Entrada
Para configurar múltiples puntos de entrada, se puede pasar un array de archivos a la propiedad entry
.
// webpack.config.js module.exports = { entry: ['./src/index.js', './src/app.js'], output: { filename: 'bundle.js', path: __dirname + '/dist' } };
En este ejemplo:
entry
: Especifica múltiples archivos de entrada (./src/index.js
y./src/app.js
).- Webpack combinará ambos archivos en un solo paquete (
bundle.js
).
Objeto de Puntos de Entrada
Para una configuración más avanzada, se puede usar un objeto para definir múltiples puntos de entrada con nombres específicos.
// webpack.config.js module.exports = { entry: { main: './src/index.js', admin: './src/admin.js' }, output: { filename: '[name].bundle.js', path: __dirname + '/dist' } };
En este ejemplo:
entry
: Define dos puntos de entrada (main
yadmin
).output
: Usa[name]
como un placeholder para los nombres de los puntos de entrada, generandomain.bundle.js
yadmin.bundle.js
.
Ejemplo Práctico
Supongamos que tenemos una aplicación con dos partes: una para usuarios y otra para administradores. Queremos crear dos paquetes separados para cada parte.
Estructura del Proyecto
Archivo de Configuración
// webpack.config.js module.exports = { entry: { user: './src/user/index.js', admin: './src/admin/index.js' }, output: { filename: '[name].bundle.js', path: __dirname + '/dist' } };
Archivos de Entrada
./src/user/index.js
./src/admin/index.js
Resultado
Después de ejecutar Webpack, se generarán dos archivos en la carpeta /dist
:
user.bundle.js
admin.bundle.js
Ejercicio Práctico
Ejercicio
-
Crea un proyecto con la siguiente estructura:
/src /home index.js /dashboard index.js webpack.config.js
-
Configura Webpack para que tenga dos puntos de entrada:
home
ydashboard
. -
En
./src/home/index.js
, agrega el siguiente código:console.log('Home module loaded');
-
En
./src/dashboard/index.js
, agrega el siguiente código:console.log('Dashboard module loaded');
-
Ejecuta Webpack y verifica que se generen los archivos
home.bundle.js
ydashboard.bundle.js
en la carpeta/dist
.
Solución
webpack.config.js
// webpack.config.js module.exports = { entry: { home: './src/home/index.js', dashboard: './src/dashboard/index.js' }, output: { filename: '[name].bundle.js', path: __dirname + '/dist' } };
./src/home/index.js
./src/dashboard/index.js
Conclusión
Los puntos de entrada son fundamentales para definir cómo Webpack debe comenzar a empaquetar su aplicación. Ya sea que esté trabajando con un solo archivo de entrada o múltiples archivos, comprender cómo configurar los puntos de entrada le permitirá estructurar su proyecto de manera eficiente y modular. En el próximo tema, exploraremos cómo configurar la salida de Webpack para controlar cómo y dónde se generan los archivos empaquetados.
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