Pular para o conteúdo
Aback Tools Logo

Como Verificar a Versão do Webpack: Terminal, package.json e Config

Como verificar sua versão do webpack: comandos npx e npm list, inspeção do lock file, leitura do webpack.version na config ou em plugins, diagnóstico de conflitos de versão e diferenças entre webpack 4 e 5.

DH
Tutorials & How-Tos12 min de leitura2,600 palavras

Saber qual versão do webpack o seu projeto está executando importa mais do que a maioria dos desenvolvedores percebe. Incompatibilidades de versão entre o webpack, seus loaders e seus plugins são uma das causas mais comuns de erros de build crípticos — erros que desaparecem no momento em que você alinha tudo à mesma versão principal. Este guia cobre todos os métodos para verificar sua versão do webpack: de um único comando no terminal à inspeção de lock files, leitura da config do webpack e compreensão do que o número de versão realmente significa para o seu build.

< 5sTempo para verificar a versãoCom qualquer método abaixo
5Versões principais do webpackDa v1 à v5
4→5Migração mais comumMudanças que quebram exigem cuidado

Por que a versão do webpack importa

As cinco versões principais do webpack não são substitutas diretas umas das outras. Cada versão principal introduziu mudanças que quebram a sintaxe de configuração, a compatibilidade de loaders e as APIs de plugins. Uma config do webpack 4 não funcionará com o webpack 5 sem modificações, e loaders publicados para o webpack 3 podem falhar silenciosamente ou produzir saída incorreta no webpack 4+.

Além da compatibilidade de configuração, a versão do webpack afeta o desempenho. O webpack 5 introduziu cache persistente, Module Federation e tree-shaking aprimorado que podem reduzir significativamente os tempos de build e os tamanhos de bundle em comparação ao webpack 4. Se você está depurando um build lento ou investigando uma regressão no tamanho do bundle, confirmar a versão é o primeiro passo de diagnóstico.

Quando conflitos de versão causam erros

  • Incompatibilidade de loaders - o `babel-loader` v8 mira o webpack 4; usá-lo com o webpack 5 sem atualizar causa configuração incorreta silenciosa.
  • Divergências na API de plugins - plugins que se conectam ao compilador do webpack usam uma API que mudou entre a v4 e a v5. Um plugin feito para a v4 falhará em um objeto compilador da v5.
  • Conflitos de peer dependencies - ferramentas como `webpack-dev-server`, `html-webpack-plugin` e `mini-css-extract-plugin` publicam versões atreladas a versões principais específicas do webpack.
  • Erros de schema do css-loader - o css-loader v5 e v6 têm validação de schema estrita; uma incompatibilidade de versão com o webpack produz o erro "ValidationError: Invalid options object".

Note

Se você atualizou recentemente o Node.js e seu build do webpack começou a falhar, a matriz de compatibilidade de versões do Node.js também merece uma verificação. O webpack 4 encerrou o suporte ao Node.js abaixo da v6; o webpack 5 exige Node.js 10.13 ou superior. A maioria dos projetos ativamente mantidos agora exige Node.js 14+.

Como verificar a versão do webpack pelo terminal

O terminal é a forma mais rápida e confiável de verificar sua versão do webpack. Há três comandos que valem a pena conhecer, cada um adequado a uma situação ligeiramente diferente.

O webpack é instalado localmente no seu projeto como devDependency. A versão instalada globalmente, se houver, quase nunca é a que o seu build realmente usa.

- Documentação do Webpack

A versão local do projeto (a mais confiável)

Seu projeto quase certamente instala o webpack como devDependency local, não como pacote global. Para verificar a versão que seus scripts de build realmente usam, execute `npx` ou `./node_modules/.bin/webpack` diretamente da raiz do projeto. Esses comandos ignoram qualquer instalação global do webpack e reportam a versão instalada localmente.

Verificar a versão do webpack instalada localmente
bash
# A mais confiável - usa a instalação local do node_modules
npx webpack --version

# Invocação alternativa por caminho
./node_modules/.bin/webpack --version

# Usando yarn
yarn webpack --version

# Pnpm
pnpm exec webpack --version

O comando npm list

`npm list webpack` consulta os seus `node_modules` locais e imprime a versão instalada junto com sua posição na árvore de dependências. Isso é útil quando você quer ver não apenas a versão, mas também qual pacote exigiu o webpack como peer dependency — uma fonte comum de conflitos de versão quando uma ferramenta de build depende de uma faixa específica do webpack.

Verificar a versão do webpack com npm list
bash
# Mostrar a versão do webpack no node_modules local
npm list webpack

# Mostrar todos os pacotes da árvore que dependem do webpack
npm list webpack --all

# Equivalente no yarn
yarn list --pattern webpack

# Equivalente no pnpm
pnpm list webpack

A versão instalada globalmente

Se você instalou o webpack globalmente com `npm install -g webpack webpack-cli`, pode verificar essa versão separadamente. Esteja ciente de que a versão global raramente é a que os builds do seu projeto usam — a maioria dos scripts de build invoca o webpack por meio dos scripts do `package.json`, que sempre resolvem para a instalação local.

Verificar webpack instalado globalmente
bash
# Verificação da instalação global
webpack --version

# Ou explicitamente do caminho global
npm list -g webpack

Warning

Nunca presuma que a saída de `webpack --version` (sem `npx`) é a versão que o seu projeto usa. Se o seu PATH resolve para um webpack instalado globalmente, a versão reportada pode ser completamente diferente da dos `node_modules` do seu projeto. Use sempre `npx webpack --version` da raiz do seu projeto para um resultado preciso.

Como encontrar a versão do webpack no package.json

O arquivo `package.json` do seu projeto lista a faixa de versões do webpack que o seu projeto declarou como dependência. Não é o mesmo que a versão instalada — é a faixa especificada quando o webpack foi adicionado, e a versão realmente instalada pode ser qualquer versão dentro dessa faixa.

1

Abra o package.json e olhe em devDependencies

O webpack quase sempre aparece em `devDependencies`, não em `dependencies`. Abra o seu `package.json` e procure a chave `"webpack"` no bloco `devDependencies`. O valor é uma faixa semver — `"^5.88.0"` significa "qualquer versão compatível com 5.88.0", enquanto `"5.88.0"` (sem circunflexo) fixa exatamente essa versão.

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

Consulte o lock file para a versão resolvida exata

A faixa do `package.json` informa a restrição declarada. O lock file — `package-lock.json`, `yarn.lock` ou `pnpm-lock.yaml` — informa a versão exata que foi realmente instalada. Procure `"webpack"` no seu lock file para encontrar a string de versão resolvida. Esta é a versão que toda máquina que clonar o repositório instalará, tornando-a o registro mais autoritativo do que está em execução.

Encontrar a versão exata nos lock files
bash
# Em package-lock.json (npm)
grep '"webpack"' package-lock.json | head -5

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

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

Valide as faixas de dependências do seu package.json

Se você quiser auditar a saúde de todas as dependências do seu `package.json` — não apenas o webpack — o verificador de saúde de dependências do package.json da Aback Tools analisa toda a sua lista de dependências em busca de padrões de versão arriscados, faixas flutuantes, pacotes obsoletos e lacunas de reprodutibilidade. Cole o seu `package.json` e obtenha um relatório de saúde acionável em segundos.

Verificador de Saúde de Dependências do package.json

Cole seu package.json para detectar faixas de versão arriscadas, dependências obsoletas e lacunas de reprodutibilidade - inteiramente no seu navegador, sem uploads.

Open tool

Verificando a versão do webpack a partir de uma config ou script

Às vezes você precisa saber a versão do webpack em tempo de build — por exemplo, para aplicar um ramo de configuração diferente conforme a versão principal, ou para registrar informações de diagnóstico em um pipeline de CI. O webpack expõe sua versão como uma propriedade no objeto compilador, e o próprio pacote webpack exporta uma string `version`.

Lendo a versão no webpack.config.js

webpack.config.js - registrar ou ramificar pela versão
javascript
const webpack = require('webpack');

// A string de versão está disponível diretamente
console.log('Webpack version:', webpack.version);

// Use-a para aplicar configuração condicionalmente
const isWebpack5 = parseInt(webpack.version, 10) >= 5;

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

Lendo a versão em um plugin ou loader personalizado

Dentro de um plugin do webpack, o objeto compilador carrega a versão do webpack via `compiler.webpack.version`. Esta é a verificação programática mais segura porque lê a versão da instância do webpack que invocou o plugin — não a que por acaso estiver instalada no `node_modules`.

Lendo a versão dentro de um plugin do webpack
javascript
class MyPlugin {
  apply(compiler) {
    // compiler.webpack está disponível no webpack 5+
    const version = compiler.webpack?.version ?? webpack.version;
    console.log('Running on webpack', version);

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

Tip

Se você está escrevendo um plugin ou loader que precisa suportar webpack 4 e webpack 5, verifique o `compiler.webpack` — ele existe na v5 mas não na v4. Use-o como sinal de versão em vez de analisar a string de versão, já que a análise de strings é frágil com identificadores de pré-lançamento.

Verificando a versão em um ambiente de CI

Em um pipeline de CI, a maneira mais limpa de registrar a versão do webpack é adicionar uma etapa que execute `npx webpack --version` e capture a saída. Isso fornece a versão instalada localmente dos `node_modules` exatos que o build usará, e ela aparece no log do pipeline em cada execução — útil para depurar falhas de build que só aparecem em certos runners.

GitHub Actions - registrar a versão do webpack antes do 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

Comparação das versões principais do webpack

Entender as diferenças entre as versões principais do webpack ajuda você a decidir se a sua versão atual é adequada ao seu projeto e o que esperar se migrar. Aqui está uma comparação concisa das capacidades e do cenário de compatibilidade de todas as cinco versões principais.

VersãoNode.js exigidoStatusRecurso principal
webpack 1Qualquer (muito antigo)⛔ 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⚠️ Apenas manutençãoModo zero-config, desempenho
webpack 5Node.js ≥10.13✓ AtivoModule Federation, cache persistente

Webpack 4 vs webpack 5 - diferenças principais

  • Cache persistente - o webpack 5 armazena em cache os resultados da compilação em disco entre execuções; um cache quente pode tornar os rebuilds de 5 a 10 vezes mais rápidos que o webpack 4.
  • Module Federation - o webpack 5 introduziu a Module Federation para compartilhar código entre frontends implantados de forma independente em tempo de execução.
  • Módulos de assets - o webpack 5 substitui `file-loader`, `url-loader` e `raw-loader` por tipos de módulos de asset integrados (`asset/resource`, `asset/inline`, etc.).
  • Polyfills do Node.js removidos - o webpack 5 não preenche mais automaticamente os módulos core do Node.js. Projetos que dependiam de polyfills para `buffer`, `path`, `stream`, etc. devem adicioná-los explicitamente.
  • Cache de longo prazo - o webpack 5 usa IDs de chunk determinísticos por padrão, produzindo nomes de arquivo estáveis entre builds que melhoram as taxas de acerto do cache do navegador.

Note

O webpack 4 ainda é amplamente usado e recebe correções de segurança ocasionais, mas sem novos recursos. Se você está iniciando um novo projeto em 2026, use o webpack 5. Se está no webpack 4 e o custo de migração é alto, permanecer na 4 é uma escolha válida — mas planeje a atualização antes que o suporte das ferramentas aos plugins do webpack 4 comece a se desgastar.

Solucionando conflitos de versão do webpack

Conflitos de versão entre o webpack e seu ecossistema são a fonte mais comum de erros de build confusos. A maioria desses erros remonta a uma de três causas raiz: múltiplas cópias do webpack no `node_modules`, um loader ou plugin feito para uma versão principal diferente, ou uma incompatibilidade na faixa de peer dependency.

Múltiplas cópias do webpack no node_modules

É possível — e surpreendentemente comum — ter mais de uma cópia do webpack instalada no seu projeto. Isso acontece quando uma dependência declara uma peer dependency do webpack com uma faixa de versão principal diferente da que o seu projeto usa. O resultado são duas instâncias incompatíveis do webpack, o que faz com que os plugins falhem silenciosamente ou travem porque estão registrados em uma instância mas invocados por outra.

Detectar múltiplas instalações do webpack
bash
# Verificar múltiplas entradas de webpack na árvore completa de dependências
npm list webpack --all

# Procurar mais de um número de versão único na saída
# p. ex., aparecer tanto [email protected] quanto [email protected]
# é sinal de peer dependencies em conflito

Resolvendo conflitos de peer dependencies

Quando o `npm list webpack --all` mostra múltiplas versões do webpack, veja qual pacote está puxando a versão mais antiga. Atualize esse pacote para uma versão que suporte sua versão principal do webpack, ou use o campo `resolutions` (Yarn) ou `overrides` (npm 8+) para forçar todos os pacotes a usarem uma única versão do webpack.

Forçar uma única versão do webpack - overrides do npm
json
{
  "overrides": {
    "webpack": "^5.88.0"
  }
}
Forçar uma única versão do webpack - resolutions do Yarn
json
{
  "resolutions": {
    "webpack": "^5.88.0"
  }
}

Validando faixas semver

Faixas de peer dependency como `"webpack": "^4 || ^5"` e `"webpack": ">=4.41.0 <6"` são expressões semver válidas, mas fáceis de interpretar mal. O validador de semver da Aback Tools verifica qualquer string de versão ou expressão de faixa contra a especificação Semver 2.0.0 — útil quando você está escrevendo uma biblioteca que declara uma faixa de peer dependency do webpack e quer confirmar que a expressão está corretamente formada.

Warning

Se você usa `npm install --legacy-peer-deps` para contornar erros de peer dependency, pode estar instalando versões incompatíveis silenciosamente. Resolva o conflito real em vez de suprimir o erro — o build pode funcionar inicialmente mas produzir bugs sutis ou falhar em produção quando um caminho de código que depende do pacote incompatível for executado.

Validador de Semver

Valide qualquer string de versão semântica ou expressão de faixa contra a especificação Semver 2.0.0 - instantaneamente no seu navegador.

Open tool

Boas práticas para gerenciar versões do webpack

Conhecer sua versão atual do webpack é só o começo. Gerenciá-la bem — para que a versão permaneça consistente entre ambientes, seja visível para cada contribuidor e seja atualizada deliberadamente e não por acidente — exige algumas práticas simples.

  1. Fixe versões exatas nas devDependencies - use `"webpack": "5.88.2"` em vez de `"^5.88.0"` para ferramentas críticas ao build. Faixas flutuantes permitem que patches mudem a versão instalada entre execuções de `npm install` em máquinas diferentes, tornando a saída do build não determinística.
  2. Faça commit do seu lock file - `package-lock.json`, `yarn.lock` ou `pnpm-lock.yaml` devem estar no controle de versão. Sem ele, contribuidores e servidores de CI instalam versões de patch diferentes.
  3. Registre a versão no CI - adicione uma etapa `npx webpack --version` antes de cada job de build. A versão aparece em todos os logs de CI, facilitando correlacionar falhas de build com mudanças de versão.
  4. Audite as dependências após atualizações - quando você atualizar o webpack, execute imediatamente `npm list webpack --all` para confirmar que nenhuma cópia secundária entrou, e `npx webpack --version` para confirmar que a nova versão é a que o seu build está usando.
  5. Leia o guia de migração antes de atualizar - cada versão principal do webpack tem um guia de migração oficial em `webpack.js.org`. Leia-o antes de atualizar — não depois que o build quebrar.

Tip

Quando um colega relata um erro de build que você não consegue reproduzir, a primeira pergunta é: o que o `npx webpack --version` mostra na máquina dele? A deriva de versões entre máquinas de desenvolvedores é uma das fontes mais comuns de falhas de build de "funciona na minha máquina" em projetos JavaScript.

Embelezador de JavaScript

Formate e indente JavaScript minificado ou desorganizado no seu navegador - útil ao inspecionar bundles de saída do webpack ou arquivos de config gerados.

Open tool

Key takeaways

  • Use `npx webpack --version` da raiz do seu projeto para verificar a versão instalada localmente — nunca confie na saída global do `webpack --version`.
  • `npm list webpack` mostra a versão instalada e sua posição na árvore de dependências; `npm list webpack --all` revela se existem múltiplas cópias em conflito.
  • O lock file (`package-lock.json`, `yarn.lock`, `pnpm-lock.yaml`) contém a versão resolvida exata — mais autoritativo que a faixa no `package.json`.
  • O webpack 5 é o lançamento ativo atual; o webpack 4 está apenas em manutenção. As adições principais do webpack 5 incluem cache persistente, Module Federation e módulos de asset integrados.
  • Múltiplas cópias do webpack no `node_modules` causam falhas silenciosas de plugins — detecte com `npm list webpack --all` e corrija com `overrides` (npm) ou `resolutions` (Yarn).
  • Fixe versões exatas do webpack nas devDependencies e faça commit do seu lock file para garantir que cada desenvolvedor e runner de CI use a mesma versão.
  • Verifique sempre primeiro a versão do webpack ao depurar um erro de build — uma incompatibilidade de versão entre o webpack e um loader ou plugin é a causa com mais frequência do que a mensagem de erro sugere.

Perguntas frequentes

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