Generador de Configuración de Webpack

webpack.config.js
Resultados

Escribir un webpack.config.js de memoria implica recordar la forma exacta de output, la expresión test de cada loader y cómo se enganchan los plugins. Este generador lo convierte en un formulario breve: define tu archivo de entrada, la carpeta de salida y el modo de compilación, y marca las piezas que necesites: TypeScript, Babel, un loader de CSS, HtmlWebpackPlugin y un servidor de desarrollo. Genera una configuración de webpack 5 limpia y lista para copiar, con nombres de archivo [contenthash] y output.clean ya incluidos.

Cómo crear una configuración de webpack

  1. 1

    Define entry y salida

    Escribe tu archivo de entrada (por defecto `./src/index.js`) y la carpeta de salida (por defecto `dist`).

  2. 2

    Elige el modo

    Selecciona `production` o `development`. Se escribe directamente en el campo `mode`.

  3. 3

    Activa loaders y plugins

    Activa TypeScript (`ts-loader`), Babel (`babel-loader`), un loader de CSS (`style-loader` + `css-loader`), `HtmlWebpackPlugin` y un servidor de desarrollo según lo que necesites.

  4. 4

    Copia la configuración

    El `webpack.config.js` se actualiza en tiempo real. Usa el botón de copiar y pégalo en la raíz de tu proyecto.

Salida por defecto

Con los valores por defecto (modo production, TypeScript, Babel, un loader de CSS y HtmlWebpackPlugin), el generador produce:

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  mode: 'production',
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.[contenthash].js',
    clean: true,
  },
  resolve: { extensions: ['.ts','.tsx','.js'] },
  module: {
    rules: [
      { test: /\.tsx?$/, use: 'ts-loader', exclude: /node_modules/ },
      { test: /\.jsx?$/, exclude: /node_modules/, use: 'babel-loader' },
      { test: /\.css$/, use: ['style-loader', 'css-loader'] },
    ],
  },
  plugins: [
    new HtmlWebpackPlugin({ template: './src/index.html' }),
  ],
};

Qué escribe cada opción

Opción Qué añade a la configuración
entry El valor de entry, p. ej. entry: './src/index.js'.
carpeta de salida output.path, resuelto con path.resolve(__dirname, 'dist').
mode mode: 'production' o mode: 'development'.
TypeScript Una regla ts-loader para .ts/.tsx, más esas extensiones en resolve.
Babel Una regla babel-loader para .js/.jsx.
loader de CSS Una regla que encadena style-loader y css-loader para .css.
HtmlWebpackPlugin La línea require más new HtmlWebpackPlugin({ template: './src/index.html' }).
servidor de desarrollo Un bloque devServer que sirve la carpeta de salida en el puerto 3000 con recarga en caliente.

Decisiones fijas en la salida

Para mantener limpia la configuración inicial, algunos valores se establecen por ti en lugar de exponerse como campos:

  • Nombres de archivo con hash. output.filename es siempre bundle.[contenthash].js, lo que invalida la caché del navegador cada vez que cambia el bundle.
  • Salida limpia. output.clean: true vacía la carpeta de salida en cada compilación, el reemplazo de webpack 5 para clean-webpack-plugin.
  • El CSS se empaqueta, no se extrae. style-loader inyecta los estilos a través de JavaScript. Para emitir un archivo .css aparte en producción, añade MiniCssExtractPlugin tú mismo.
  • Servidor de desarrollo básico. Cuando se activa, devServer establece static, port: 3000 y hot: true. Añade a mano opciones como historyApiFallback o proxy si tu app las necesita.

Cómo ampliarlo

El archivo generado es un punto de partida, no una configuración de producción completa. Pasos habituales que añades a mano: MiniCssExtractPlugin para extraer el CSS, sass-loader para .scss, los módulos asset de webpack 5 para imágenes y fuentes, un valor de devtool para los source maps y un bloque splitChunks para dividir el código.

Preguntas frecuentes

Para webpack 5. La salida usa output.clean y nombres de archivo [contenthash], las convenciones modernas de webpack 5, así que no hace falta ningún plugin de limpieza extra.

No, siempre genera un webpack.config.js en JavaScript. Activar la opción de TypeScript añade una regla ts-loader para que webpack compile tu código .ts/.tsx; no cambia el formato del propio archivo de configuración.

El bloque devServer generado usa el puerto 3000 con recarga en caliente. Cambia el valor de port en el archivo copiado si necesitas otro.

Sí. Cada opción añade su propia regla (ts-loader para .tsx?, babel-loader para .jsx?), así que puedes activar una, la otra o ambas según cómo transpile tu proyecto.

Herramientas relacionadas

Herramienta disponible en otros idiomas