Saltar al contenido
Aback Tools Logo

Cómo Comprobar la Versión de Webpack: Terminal, package.json y Config

Cómo comprobar tu versión de webpack: comandos npx y npm list, inspección del lock file, lectura de webpack.version en config o plugins, diagnóstico de conflictos de versiones y diferencias entre webpack 4 y 5.

DH
Tutorials & How-Tos12 min de lectura2,600 palabras

Saber qué versión de webpack ejecuta tu proyecto importa más de lo que la mayoría de los desarrolladores se dan cuenta. Los desajustes de versión entre webpack, sus loaders y sus plugins son una de las causas más habituales de errores de build crípticos — errores que desaparecen en el momento en que alineas todo a la misma versión principal. Esta guía cubre todos los métodos para comprobar tu versión de webpack: desde un único comando de terminal hasta inspeccionar lock files, leer la config de webpack y entender qué significa realmente el número de versión para tu build.

< 5sTiempo para comprobar la versiónCon cualquier método de abajo
5Versiones principales de webpackDe la v1 a la v5
4→5Migración más comúnLos cambios rompientes requieren cuidado

Por qué importa tu versión de webpack

Las cinco versiones principales de webpack no son reemplazos directos entre sí. Cada versión principal introdujo cambios rompientes en la sintaxis de configuración, la compatibilidad de loaders y las APIs de plugins. Una config de webpack 4 no funcionará con webpack 5 sin modificaciones, y los loaders publicados para webpack 3 pueden fallar silenciosamente o producir una salida incorrecta en webpack 4+.

Más allá de la compatibilidad de configuración, la versión de webpack afecta al rendimiento. Webpack 5 introdujo caché persistente, Module Federation y un tree-shaking mejorado que puede reducir significativamente los tiempos de build y los tamaños de bundle en comparación con webpack 4. Si estás depurando un build lento o investigando una regresión en el tamaño del bundle, confirmar la versión es el primer paso de diagnóstico.

Cuando los conflictos de versión causan errores

  • Incompatibilidad de loaders - `babel-loader` v8 apunta a webpack 4; usarlo con webpack 5 sin actualizar causa una mala configuración silenciosa.
  • Desajustes de la API de plugins - los plugins que se enganchan al compilador de webpack usan una API que cambió entre la v4 y la v5. Un plugin construido para v4 fallará sobre un objeto compilador de v5.
  • Conflictos de peer dependencies - herramientas como `webpack-dev-server`, `html-webpack-plugin` y `mini-css-extract-plugin` publican versiones ligadas a versiones principales específicas de webpack.
  • Errores de esquema de css-loader - css-loader v5 y v6 tienen validación de esquema estricta; un desajuste de versión con webpack produce el error "ValidationError: Invalid options object".

Note

Si recientemente actualizaste Node.js y tu build de webpack empezó a fallar, también vale la pena revisar la matriz de compatibilidad de versiones de Node.js. Webpack 4 eliminó el soporte para Node.js inferior a v6; webpack 5 requiere Node.js 10.13 o superior. La mayoría de los proyectos mantenidos activamente ahora requieren Node.js 14+.

Cómo comprobar la versión de webpack desde la terminal

La terminal es la forma más rápida y fiable de comprobar tu versión de webpack. Hay tres comandos que vale la pena conocer, cada uno adecuado para una situación ligeramente diferente.

Webpack se instala localmente en tu proyecto como devDependency. La versión instalada globalmente, si existe, casi nunca es la que tu build está usando realmente.

- Documentación de Webpack

La versión local del proyecto (la más fiable)

Tu proyecto casi con seguridad instala webpack como devDependency local, no como paquete global. Para comprobar la versión que tus scripts de build usan realmente, ejecuta `npx` o `./node_modules/.bin/webpack` directamente desde la raíz del proyecto. Estos comandos omiten cualquier instalación global de webpack y reportan la versión instalada localmente.

Comprobar la versión de webpack instalada localmente
bash
# La más fiable - usa la instalación local de node_modules
npx webpack --version

# Invocación alternativa por ruta
./node_modules/.bin/webpack --version

# Con yarn
yarn webpack --version

# Pnpm
pnpm exec webpack --version

El comando npm list

`npm list webpack` consulta tus `node_modules` locales e imprime la versión instalada junto con su posición en el árbol de dependencias. Es útil cuando quieres ver no solo la versión sino también qué paquete requirió webpack como peer dependency — una fuente habitual de conflictos de versiones cuando una herramienta de build depende de un rango específico de webpack.

Comprobar la versión de webpack con npm list
bash
# Mostrar la versión de webpack en node_modules local
npm list webpack

# Mostrar todos los paquetes del árbol que dependen de webpack
npm list webpack --all

# Equivalente en yarn
yarn list --pattern webpack

# Equivalente en pnpm
pnpm list webpack

La versión instalada globalmente

Si instalaste webpack globalmente con `npm install -g webpack webpack-cli`, puedes comprobar esa versión por separado. Ten en cuenta que la versión global rara vez es la que usan los builds de tu proyecto — la mayoría de los scripts de build invocan webpack a través de los scripts de `package.json`, que siempre resuelven a la instalación local.

Comprobar webpack instalado globalmente
bash
# Verificación de instalación global
webpack --version

# O explícitamente desde la ruta global
npm list -g webpack

Warning

Nunca asumas que la salida de `webpack --version` (sin `npx`) es la versión que usa tu proyecto. Si tu PATH resuelve a un webpack instalado globalmente, la versión reportada puede ser completamente diferente de la de los `node_modules` de tu proyecto. Usa siempre `npx webpack --version` desde la raíz de tu proyecto para un resultado preciso.

Cómo encontrar la versión de webpack en package.json

El archivo `package.json` de tu proyecto lista el rango de versiones de webpack que tu proyecto declaró como dependencia. No es lo mismo que la versión instalada — es el rango que se especificó cuando se añadió webpack, y la versión realmente instalada puede ser cualquier versión dentro de ese rango.

1

Abre package.json y mira en devDependencies

Webpack casi siempre aparece bajo `devDependencies`, no `dependencies`. Abre tu `package.json` y busca la clave `"webpack"` en el bloque `devDependencies`. El valor es un rango semver — `"^5.88.0"` significa "cualquier versión compatible con 5.88.0", mientras que `"5.88.0"` (sin caret) fija exactamente esa versión.

Entrada típica de webpack en package.json
json
{
  "devDependencies": {
    "webpack": "^5.88.0",
    "webpack-cli": "^5.1.4",
    "webpack-dev-server": "^4.15.1"
  }
}
2

Consulta el lock file para la versión resuelta exacta

El rango de `package.json` te dice la restricción declarada. El lock file — `package-lock.json`, `yarn.lock` o `pnpm-lock.yaml` — te dice la versión exacta que se instaló realmente. Busca `"webpack"` en tu lock file para encontrar la cadena de versión resuelta. Esta es la versión que instalará cada máquina que clone el repositorio, lo que la convierte en el registro más autoritativo de lo que se está ejecutando.

Encontrar la versión exacta en los lock files
bash
# En package-lock.json (npm)
grep '"webpack"' package-lock.json | head -5

# En yarn.lock
grep 'webpack@' yarn.lock | head -5

# En pnpm-lock.yaml
grep 'webpack' pnpm-lock.yaml | head -10
3

Valida los rangos de dependencias de tu package.json

Si quieres auditar la salud de todas las dependencias de tu `package.json` — no solo webpack — el comprobador de salud de dependencias de package.json de Aback Tools analiza toda tu lista de dependencias en busca de patrones de versión arriesgados, rangos flotantes, paquetes obsoletos y brechas de reproducibilidad. Pega tu `package.json` y obtén un informe de salud accionable en segundos.

Comprobador de Salud de Dependencias de package.json

Pega tu package.json para detectar rangos de versión arriesgados, dependencias obsoletas y brechas de reproducibilidad — entirely en tu navegador sin subidas.

Open tool

Comprobar la versión de webpack desde una config o script

A veces necesitas saber la versión de webpack en tiempo de build — por ejemplo, para aplicar una rama de configuración diferente según la versión principal, o para registrar información de diagnóstico en un pipeline de CI. Webpack expone su versión como una propiedad del objeto compilador, y el propio paquete webpack exporta una cadena `version`.

Leer la versión en webpack.config.js

webpack.config.js - registrar o ramificar según la versión
javascript
const webpack = require('webpack');

// La cadena de versión está disponible directamente
console.log('Webpack version:', webpack.version);

// Úsala para aplicar configuración condicionalmente
const isWebpack5 = parseInt(webpack.version, 10) >= 5;

module.exports = {
  // ...
  plugins: [
    isWebpack5
      ? new webpack.ids.DeterministicModuleIdsPlugin()
      : new webpack.HashedModuleIdsPlugin(),
  ],
};

Leer la versión en un plugin o loader personalizado

Dentro de un plugin de webpack, el objeto compilador lleva la versión de webpack vía `compiler.webpack.version`. Esta es la comprobación programática más segura porque lee la versión de la instancia de webpack que invocó al plugin — no la versión que casualmente esté instalada en `node_modules`.

Leer la versión dentro de un plugin de webpack
javascript
class MyPlugin {
  apply(compiler) {
    // compiler.webpack está disponible en webpack 5+
    const version = compiler.webpack?.version ?? webpack.version;
    console.log('Running on webpack', version);

    compiler.hooks.done.tap('MyPlugin', (stats) => {
      // Build complete
    });
  }
}

Tip

Si escribes un plugin o loader que necesita soportar webpack 4 y webpack 5, comprueba `compiler.webpack` — existe en la v5 pero no en la v4. Úsalo como señal de versión en lugar de parsear la cadena de versión, ya que el parseo de cadenas es frágil con identificadores de pre-release.

Comprobar la versión en un entorno de CI

En un pipeline de CI, la forma más limpia de registrar la versión de webpack es añadir un paso que ejecute `npx webpack --version` y capture la salida. Esto te da la versión instalada localmente de los `node_modules` exactos que usará el build, y aparece en el log del pipeline en cada ejecución — útil para depurar fallos de build que solo aparecen en ciertos runners.

GitHub Actions - registrar la versión de webpack antes del build
yaml
steps:
  - uses: actions/checkout@v4
  - uses: actions/setup-node@v4
    with:
      node-version: '20'
  - run: npm ci
  - name: Log webpack version
    run: npx webpack --version
  - name: Build
    run: npm run build

Comparación de versiones principales de webpack

Entender las diferencias entre las versiones principales de webpack te ayuda a decidir si tu versión actual es adecuada para tu proyecto y qué esperar si migras. Aquí tienes una comparación concisa de las capacidades y el panorama de compatibilidad de las cinco versiones principales.

VersiónNode.js requeridoEstadoCaracterística clave
webpack 1Cualquiera (muy antiguo)⛔ EOLBundler CommonJS original
webpack 2Node.js ≥4⛔ EOLTree-shaking de módulos ES
webpack 3Node.js ≥6⛔ EOLScope hoisting, imports dinámicos
webpack 4Node.js ≥6⚠️ Solo mantenimientoModo cero-config, rendimiento
webpack 5Node.js ≥10.13✓ ActivoModule Federation, caché persistente

Webpack 4 vs webpack 5 - diferencias clave

  • Caché persistente - webpack 5 cachea los resultados de compilación en disco entre ejecuciones; una caché caliente puede hacer los rebuilds entre 5 y 10 veces más rápidos que webpack 4.
  • Module Federation - webpack 5 introdujo Module Federation para compartir código entre frontends desplegados independientemente en tiempo de ejecución.
  • Módulos de assets - webpack 5 reemplaza `file-loader`, `url-loader` y `raw-loader` con tipos de módulos de asset integrados (`asset/resource`, `asset/inline`, etc.).
  • Polyfills de Node.js eliminados - webpack 5 ya no rellena automáticamente los módulos core de Node.js. Los proyectos que dependían de polyfills para `buffer`, `path`, `stream`, etc. deben añadirlos explícitamente.
  • Caché a largo plazo - webpack 5 usa IDs de chunk deterministas por defecto, produciendo nombres de archivo estables entre builds que mejoran las tasas de acierto de la caché del navegador.

Note

Webpack 4 sigue siendo muy usado y recibe correcciones de seguridad ocasionales, pero no funcionalidades nuevas. Si empiezas un proyecto nuevo en 2026, usa webpack 5. Si estás en webpack 4 y el coste de migración es alto, quedarte en la 4 es una opción válida — pero planifica la actualización antes de que el soporte de las herramientas para los plugins de webpack 4 empiece a erosionarse.

Resolver conflictos de versiones de webpack

Los conflictos de versiones entre webpack y su ecosistema son la fuente más común de errores de build confusos. La mayoría de estos errores se remontan a una de tres causas raíz: múltiples copias de webpack en `node_modules`, un loader o plugin construido para una versión principal diferente, o un desajuste en el rango de peer dependencies.

Múltiples copias de webpack en node_modules

Es posible — y sorprendentemente común — tener más de una copia de webpack instalada en tu proyecto. Esto ocurre cuando una dependencia declara una peer dependency sobre webpack con un rango de versión principal diferente al que usa tu proyecto. El resultado son dos instancias de webpack incompatibles, lo que hace que los plugins fallen silenciosamente o se bloqueen porque están registrados contra una instancia pero invocados por otra.

Detectar múltiples instalaciones de webpack
bash
# Comprobar múltiples entradas de webpack en el árbol completo de dependencias
npm list webpack --all

# Buscar más de un número de versión único en la salida
# p. ej., que aparezcan tanto [email protected] como [email protected]
# es señal de peer dependencies en conflicto

Resolver conflictos de peer dependencies

Cuando `npm list webpack --all` muestra múltiples versiones de webpack, mira qué paquete está arrastrando la versión antigua. Actualiza ese paquete a una versión que soporte tu versión principal de webpack, o usa el campo `resolutions` (Yarn) o `overrides` (npm 8+) para forzar que todos los paquetes usen una única versión de webpack.

Forzar una única versión de webpack - overrides de npm
json
{
  "overrides": {
    "webpack": "^5.88.0"
  }
}
Forzar una única versión de webpack - resolutions de Yarn
json
{
  "resolutions": {
    "webpack": "^5.88.0"
  }
}

Validar rangos semver

Rangos de peer dependencies como `"webpack": "^4 || ^5"` y `"webpack": ">=4.41.0 <6"` son expresiones semver válidas pero fáciles de malinterpretar. El validador de semver de Aback Tools comprueba cualquier cadena de versión o expresión de rango contra la especificación Semver 2.0.0 — útil cuando escribes una librería que declara un rango de peer dependency de webpack y quieres confirmar que la expresión está bien formada.

Warning

Si usas `npm install --legacy-peer-deps` para eludir los errores de peer dependencies, puedes estar instalando versiones incompatibles silenciosamente. Resuelve el conflicto real en lugar de suprimir el error — el build puede funcionar al principio pero producir bugs sutiles o fallar en producción cuando se ejecute una ruta de código que dependa del paquete incompatible.

Validador de Semver

Valida cualquier cadena de versión semántica o expresión de rango contra la especificación Semver 2.0.0 - al instante en tu navegador.

Open tool

Buenas prácticas para gestionar versiones de webpack

Conocer tu versión actual de webpack es solo el comienzo. Gestionarla bien — de modo que la versión se mantenga consistente entre entornos, sea visible para cada colaborador y se actualice deliberadamente y no por accidente — requiere unas prácticas sencillas.

  1. Fija versiones exactas en devDependencies - usa `"webpack": "5.88.2"` en lugar de `"^5.88.0"` para herramientas críticas del build. Los rangos flotantes permiten que los parches cambien la versión instalada entre ejecuciones de `npm install` en distintas máquinas, haciendo la salida del build no determinista.
  2. Haz commit de tu lock file - `package-lock.json`, `yarn.lock` o `pnpm-lock.yaml` deben estar en el control de versiones. Sin él, los colaboradores y servidores de CI instalan versiones de parche diferentes.
  3. Registra la versión en CI - añade un paso `npx webpack --version` antes de cada job de build. La versión aparece en cada log de CI, facilitando correlacionar fallos de build con cambios de versión.
  4. Audita las dependencias tras las actualizaciones - cuando actualices webpack, ejecuta de inmediato `npm list webpack --all` para confirmar que no se colaron copias secundarias, y `npx webpack --version` para confirmar que la nueva versión es la que usa tu build.
  5. Lee la guía de migración antes de actualizar - cada versión principal de webpack tiene una guía de migración oficial en `webpack.js.org`. Léela antes de actualizar — no después de que el build se rompa.

Tip

Cuando un compañero reporta un error de build que no puedes reproducir, la primera pregunta es: ¿qué muestra `npx webpack --version` en su máquina? La deriva de versiones entre máquinas de desarrollo es una de las fuentes más habituales de fallos de build de "en mi máquina funciona" en proyectos JavaScript.

Embellecedor de JavaScript

Formatea e indenta JavaScript minificado o desordenado en tu navegador - útil al inspeccionar bundles de salida de webpack o archivos de config generados.

Open tool

Key takeaways

  • Usa `npx webpack --version` desde la raíz de tu proyecto para comprobar la versión instalada localmente — nunca confíes en la salida global de `webpack --version`.
  • `npm list webpack` muestra la versión instalada y su posición en el árbol de dependencias; `npm list webpack --all` revela si existen múltiples copias en conflicto.
  • El lock file (`package-lock.json`, `yarn.lock`, `pnpm-lock.yaml`) contiene la versión resuelta exacta — más autoritativo que el rango de `package.json`.
  • Webpack 5 es la versión activa actual; webpack 4 está solo en mantenimiento. Las adiciones clave de webpack 5 incluyen caché persistente, Module Federation y módulos de asset integrados.
  • Múltiples copias de webpack en `node_modules` causan fallos silenciosos de plugins — detecta con `npm list webpack --all` y corrige con `overrides` (npm) o `resolutions` (Yarn).
  • Fija versiones exactas de webpack en devDependencies y haz commit de tu lock file para asegurar que cada desarrollador y runner de CI use la misma versión.
  • Comprueba siempre primero la versión de webpack al depurar un error de build — un desajuste de versión entre webpack y un loader o plugin es la causa más a menudo de lo que sugiere el mensaje de error.

Preguntas frecuentes

Run `npx webpack --version` from your project root directory. This takes under five seconds and reports the exact version installed in your local `node_modules` - the version your build scripts actually use. Make sure to run it from the project root, not from a subdirectory, so npx resolves to the correct local installation rather than a parent directory or global install.

`webpack --version` (without npx) resolves webpack from your system PATH, which may point to a globally installed version. `npx webpack --version` resolves webpack from the local `node_modules` in your current directory. Most projects install webpack locally as a devDependency, so the local version is what your build uses. Always prefer `npx webpack --version` when you need to know which version is actually building your project.

Require the webpack package at the top of your config and read `webpack.version`. For example: `const webpack = require("webpack"); console.log(webpack.version);`. Inside a plugin, use `compiler.webpack.version` instead - this reads the version of the webpack instance that invoked the plugin rather than whatever version is in `node_modules`, which is safer in monorepo setups where multiple webpack versions may coexist.

Your `package.json` contains a semver range like `"^5.88.0"`, which permits any compatible version. For the exact installed version, check your lock file: search for `"webpack"` in `package-lock.json` (npm), `webpack@` in `yarn.lock`, or `webpack:` in `pnpm-lock.yaml`. The resolved version string in the lock file is what was actually downloaded and is the authoritative version across all machines that install from that lock file.

Multiple webpack versions in your dependency tree means two or more packages installed different webpack majors as nested dependencies. This causes conflicts because plugins and loaders hook into the webpack compiler object - if different parts of your build use different webpack instances, plugins registered against one will not run in the other. Fix this by updating the conflicting package to a version that supports your webpack major, or use the `overrides` field in package.json (npm 8+) to force a single version.

Use webpack 5. It is the only actively developed version and brings substantial improvements: persistent disk caching for fast rebuilds, Module Federation for micro-frontend architectures, built-in asset modules that replace file-loader and url-loader, and better tree-shaking. Webpack 4 is in maintenance mode and receives only security fixes. New tooling and plugins increasingly require webpack 5, and the webpack 4 ecosystem is gradually eroding.

css-loader v5 and above use strict option schema validation and are designed for webpack 5. If you run css-loader v5+ with webpack 4, you will see a "ValidationError: Invalid options object. CSS Loader has been initialized using an options object that does not match the API schema" error. The fix is either to downgrade css-loader to the version compatible with your webpack major, or to upgrade webpack to v5. Check the css-loader release notes for the exact webpack peer dependency range each version targets.

Add a `run: npx webpack --version` step in your CI configuration immediately after the `npm ci` or `npm install` step. In GitHub Actions, add it as a named step - "Log webpack version" - so the version is clearly visible in the job log. This takes seconds and gives you a permanent record of the webpack version used in every build, which is invaluable when diagnosing build regressions that appeared after a dependency update.

ShareXLinkedIn