En este tema, aprenderemos cómo configurar un proyecto Node.js utilizando Webpack. Este proceso incluye la instalación de dependencias necesarias, la configuración del archivo webpack.config.js
, y la creación de scripts para la compilación y el desarrollo. Al final de este tema, tendrás un proyecto Node.js completamente funcional y optimizado con Webpack.
- Instalación de Dependencias
Primero, necesitamos instalar Node.js y npm (Node Package Manager) si aún no los tienes instalados. Puedes descargar Node.js desde nodejs.org.
Luego, crea un nuevo directorio para tu proyecto y navega a él en tu terminal:
Inicializa un nuevo proyecto npm:
Esto creará un archivo package.json
con la configuración predeterminada.
Instalación de Webpack y Webpack CLI
Instalemos Webpack y Webpack CLI como dependencias de desarrollo:
Instalación de Babel
Para asegurarnos de que nuestro código sea compatible con versiones anteriores de Node.js, utilizaremos Babel. Instala Babel y sus presets:
- Configuración del Archivo
webpack.config.js
webpack.config.js
Crea un archivo webpack.config.js
en la raíz de tu proyecto. Este archivo contendrá la configuración de Webpack.
const path = require('path'); module.exports = { entry: './src/index.js', // Punto de entrada output: { path: path.resolve(__dirname, 'dist'), // Directorio de salida filename: 'bundle.js', // Nombre del archivo de salida }, target: 'node', // Especifica que el entorno de destino es Node.js module: { rules: [ { test: /\.js$/, // Aplica esta regla a archivos .js exclude: /node_modules/, // Excluye la carpeta node_modules use: { loader: 'babel-loader', // Usa babel-loader para transpilar el código options: { presets: ['@babel/preset-env'], // Usa el preset-env de Babel }, }, }, ], }, mode: 'development', // Modo de desarrollo };
- Estructura del Proyecto
Crea la estructura básica del proyecto:
En src/index.js
, escribe un simple código de ejemplo:
const http = require('http'); const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello, World!\n'); }); const PORT = process.env.PORT || 3000; server.listen(PORT, () => { console.log(`Server running at http://localhost:${PORT}/`); });
- Scripts de npm
Agrega scripts en tu package.json
para facilitar la compilación y el desarrollo:
- Compilación y Ejecución
Compila tu proyecto ejecutando:
Esto generará un archivo bundle.js
en la carpeta dist
.
Para ejecutar tu servidor Node.js, usa:
Deberías ver el mensaje Server running at http://localhost:3000/
en tu terminal. Abre tu navegador y navega a http://localhost:3000/
para ver el mensaje "Hello, World!".
Ejercicio Práctico
Ejercicio
- Modifica el mensaje de respuesta del servidor para que incluya la fecha y hora actual.
- Configura Webpack para que soporte archivos
.json
y carga un archivo de configuración JSON en tu servidor.
Solución
- Modifica
src/index.js
:
const http = require('http'); const server = http.createServer((req, res) => { const now = new Date(); res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end(`Hello, World!\nCurrent date and time: ${now}\n`); }); const PORT = process.env.PORT || 3000; server.listen(PORT, () => { console.log(`Server running at http://localhost:${PORT}/`); });
- Instala el loader para archivos JSON y modifica
webpack.config.js
:
const path = require('path'); module.exports = { entry: './src/index.js', output: { path: path.resolve(__dirname, 'dist'), filename: 'bundle.js', }, target: 'node', module: { rules: [ { test: /\.js$/, exclude: /node_modules/, use: { loader: 'babel-loader', options: { presets: ['@babel/preset-env'], }, }, }, { test: /\.json$/, use: 'json-loader', }, ], }, mode: 'development', };
Crea un archivo src/config.json
:
Modifica src/index.js
para cargar el archivo JSON:
const http = require('http'); const config = require('./config.json'); const server = http.createServer((req, res) => { const now = new Date(); res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end(`${config.message}\nCurrent date and time: ${now}\n`); }); const PORT = process.env.PORT || 3000; server.listen(PORT, () => { console.log(`Server running at http://localhost:${PORT}/`); });
Conclusión
En este tema, hemos configurado un proyecto Node.js utilizando Webpack, incluyendo la instalación de dependencias, la configuración del archivo webpack.config.js
, y la creación de scripts de npm para la compilación y ejecución. También hemos realizado un ejercicio práctico para reforzar los conceptos aprendidos. Ahora estás listo para avanzar a temas más avanzados y optimizar tu proyecto Node.js 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