Zum Inhalt springen
Aback Tools Logo

Webpack-Version Prüfen: Terminal, package.json und Config

So prüfen Sie Ihre Webpack-Version: npx- und npm-list-Befehle, Lockfile-Inspektion, Auslesen von webpack.version in Config oder Plugins, Diagnose von Versionskonflikten und Unterschiede zwischen Webpack 4 und 5.

DH
Tutorials & How-Tos12 Min. Lesezeit2,600 Wörter

Zu wissen, welche Webpack-Version Ihr Projekt ausführt, ist wichtiger, als die meisten EntwicklerRealisieren. Versionskonflikte zwischen Webpack, seinen Loaders und Plugins sind eine der häufigsten Ursachen für kryptische Build-Fehler — Fehler, die verschwinden, sobald Sie alles auf dieselbe Major-Version ausrichten. Dieser Leitfaden deckt jede Methode zum Prüfen Ihrer Webpack-Version ab: von einem einzigen Terminal-Befehl bis zur Inspektion von Lockfiles, dem Lesen der Webpack-Config und dem Verständnis, was die Versionsnummer für Ihren Build wirklich bedeutet.

< 5sZeit zum Prüfen der VersionMit jeder Methode unten
5Webpack-Major-Versionenv1 bis v5
4→5Häufigste MigrationBreaking Changes erfordern Sorgfalt

Warum Ihre Webpack-Version wichtig ist

Die fünf Major-Versionen von Webpack sind keine Drop-in-Ersätze füreinander. Jedes Major-Release führte Breaking Changes in der Konfigurationssyntax, der Loader-Kompatibilität und den Plugin-APIs ein. Eine Webpack-4-Config funktioniert nicht ohne Modifikationen mit Webpack 5, und für Webpack 3 veröffentlichte Loader können in Webpack 4+ still scheitern oder falsche Ausgaben erzeugen.

Über die Konfigurationskompatibilität hinaus beeinflusst die Webpack-Version die Performance. Webpack 5 führte persistentes Caching, Module Federation und verbessertes Tree-Shaking ein, das Build-Zeiten und Bundle-Größen im Vergleich zu Webpack 4 deutlich reduzieren kann. Wenn Sie einen langsamen Build debuggen oder eine Bundle-Größen-Regression untersuchen, ist das Bestätigen der Version der erste Diagnoseschritt.

Wenn Versionskonflikte Fehler verursachen

  • Loader-Inkompatibilität - `babel-loader` v8 zielt auf Webpack 4 ab; die Verwendung mit Webpack 5 ohne Aktualisierung führt zu stiller Fehlkonfiguration.
  • Plugin-API-Abweichungen - Plugins, die sich in den Webpack-Compiler einklinken, verwenden eine API, die sich zwischen v4 und v5 geändert hat. Ein für v4 gebautes Plugin wirft einen Fehler auf einem v5-Compiler-Objekt.
  • Peer-Dependency-Konflikte - Tools wie `webpack-dev-server`, `html-webpack-plugin` und `mini-css-extract-plugin` veröffentlichen Versionen, die an bestimmte Webpack-Major-Versionen gebunden sind.
  • CSS-Loader-Schemafehler - css-loader v5 und v6 haben strenge Schema-Validierung; ein Versionskonflikt mit Webpack erzeugt den Fehler „ValidationError: Invalid options object".

Note

Wenn Sie kürzlich Node.js aktualisiert haben und Ihr Webpack-Build zu versagen begann, lohnt sich auch ein Blick auf die Node.js-Versionskompatibilitätsmatrix. Webpack 4 unterstützt Node.js unter v6 nicht mehr; Webpack 5 erfordert Node.js 10.13 oder höher. Die meisten aktiv gepflegten Projekte verlangen inzwischen Node.js 14+.

So prüfen Sie die Webpack-Version über das Terminal

Das Terminal ist der schnellste und zuverlässigste Weg, Ihre Webpack-Version zu prüfen. Es gibt drei Befehle, die man kennen sollte, jeder für eine etwas andere Situation geeignet.

Webpack wird lokal in Ihrem Projekt als devDependency installiert. Die global installierte Version, falls vorhanden, ist fast nie die, die Ihr Build tatsächlich verwendet.

- Webpack-Dokumentation

Die projektlokale Version (am zuverlässigsten)

Ihr Projekt installiert Webpack mit ziemlicher Sicherheit als lokale devDependency, nicht als globales Paket. Um die Version zu prüfen, die Ihre Build-Skripte tatsächlich verwenden, führen Sie `npx` oder `./node_modules/.bin/webpack` direkt aus dem Projektstamm aus. Diese Befehle umgehen jede globale Webpack-Installation und melden die lokal installierte Version.

Lokal installierte Webpack-Version prüfen
bash
# Am zuverlässigsten - nutzt die lokale node_modules-Installation
npx webpack --version

# Alternativer pfadbasierter Aufruf
./node_modules/.bin/webpack --version

# Mit yarn
yarn webpack --version

# Pnpm
pnpm exec webpack --version

Der npm-list-Befehl

`npm list webpack` fragt Ihre lokalen `node_modules` ab und gibt die installierte Version zusammen mit ihrer Position im Abhängigkeitsbaum aus. Dies ist nützlich, wenn Sie nicht nur die Version sehen wollen, sondern auch, welches Paket Webpack als Peer-Dependency angefordert hat — eine häufige Quelle von Versionskonflikten, wenn ein Build-Tool von einem bestimmten Webpack-Bereich abhängt.

Webpack-Version mit npm list prüfen
bash
# Webpack-Version in lokalem node_modules anzeigen
npm list webpack

# Alle Pakete im Baum anzeigen, die von Webpack abhängen
npm list webpack --all

# Yarn-Äquivalent
yarn list --pattern webpack

# Pnpm-Äquivalent
pnpm list webpack

Die global installierte Version

Wenn Sie Webpack global mit `npm install -g webpack webpack-cli` installiert haben, können Sie diese Version separat prüfen. Beachten Sie, dass die globale Version selten die ist, die die Builds Ihres Projekts verwenden — die meisten Build-Skripte rufen Webpack über `package.json`-Skripte auf, die immer zur lokalen Installation auflösen.

Global installiertes Webpack prüfen
bash
# Prüfung der globalen Installation
webpack --version

# Oder explizit aus dem globalen Pfad
npm list -g webpack

Warning

Gehen Sie niemals davon aus, dass die Ausgabe von `webpack --version` (ohne `npx`) die Version ist, die Ihr Projekt verwendet. Wenn Ihr PATH zu einer global installierten Webpack-Version auflöst, kann die gemeldete Version völlig anders sein als die in den `node_modules` Ihres Projekts. Verwenden Sie immer `npx webpack --version` aus dem Projektstamm für ein genaues Ergebnis.

So finden Sie die Webpack-Version in package.json

Die Datei `package.json` Ihres Projekts listet den Webpack-Versionsbereich auf, den Ihr Projekt als Abhängigkeit deklariert hat. Das ist nicht dasselbe wie die installierte Version — es ist der Bereich, der beim Hinzufügen von Webpack angegeben wurde, und die tatsächlich installierte Version kann jede Version innerhalb dieses Bereichs sein.

1

Öffnen Sie package.json und schauen Sie in devDependencies

Webpack steht fast immer unter `devDependencies`, nicht unter `dependencies`. Öffnen Sie Ihre `package.json` und suchen Sie nach einem `"webpack"`-Schlüssel im `devDependencies`-Block. Der Wert ist ein Semver-Bereich — `"^5.88.0"` bedeutet „jede Version, kompatibel mit 5.88.0", während `"5.88.0"` (ohne Caret) exakt diese Version festpinnt.

Typischer Webpack-Eintrag in package.json
json
{
  "devDependencies": {
    "webpack": "^5.88.0",
    "webpack-cli": "^5.1.4",
    "webpack-dev-server": "^4.15.1"
  }
}
2

Prüfen Sie die Lockfile für die exakt aufgelöste Version

Der `package.json`-Bereich nennt die deklarierte Einschränkung. Die Lockfile — `package-lock.json`, `yarn.lock` oder `pnpm-lock.yaml` — nennt die exakte Version, die tatsächlich installiert wurde. Suchen Sie nach `"webpack"` in Ihrer Lockfile, um die aufgelöste Versionszeichenkette zu finden. Dies ist die Version, die jede Maschine, die das Repo klont, installieren wird — das macht sie zur autoritativsten Aufzeichnung dessen, was läuft.

Exakte Version in Lockfiles finden
bash
# In package-lock.json (npm)
grep '"webpack"' package-lock.json | head -5

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

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

Validieren Sie die Abhängigkeitsbereiche Ihrer package.json

Wenn Sie die Gesundheit aller Abhängigkeiten in Ihrer `package.json` prüfen wollen — nicht nur Webpack —, analysiert der package.json Dependency Health Checker von Aback Tools Ihre gesamte Abhängigkeitsliste auf riskante Versionsmuster, schwebende Bereiche, veraltete Pakete und Reproduzierbarkeitslücken. Fügen Sie Ihre `package.json` ein und erhalten Sie in Sekunden einen umsetzbaren Gesundheitsbericht.

package.json Dependency Health Checker

Fügen Sie Ihre package.json ein, um riskante Versionsbereiche, veraltete Abhängigkeiten und Reproduzierbarkeitslücken zu erkennen - vollständig in Ihrem Browser ohne Uploads.

Open tool

Webpack-Version aus einer Config oder einem Skript prüfen

Manchmal müssen Sie die Webpack-Version zur Build-Zeit kennen — zum Beispiel, um je nach Major-Version einen anderen Konfigurationszweig anzuwenden oder Diagnoseinformationen in einer CI-Pipeline zu protokollieren. Webpack legt seine Version als Eigenschaft auf dem Compiler-Objekt offen, und das Webpack-Paket selbst exportiert einen `version`-String.

Version in webpack.config.js lesen

webpack.config.js - Version protokollieren oder verzweigen
javascript
const webpack = require('webpack');

// Der Versions-String ist direkt verfügbar
console.log('Webpack version:', webpack.version);

// Verwendung für bedingte Konfiguration
const isWebpack5 = parseInt(webpack.version, 10) >= 5;

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

Version in einem eigenen Plugin oder Loader lesen

Innerhalb eines Webpack-Plugins trägt das Compiler-Objekt die Webpack-Version über `compiler.webpack.version`. Dies ist die sicherste programmatische Prüfung, weil sie die Version der Webpack-Instanz liest, die das Plugin aufgerufen hat — nicht die, die zufällig in `node_modules` installiert ist.

Version innerhalb eines Webpack-Plugins lesen
javascript
class MyPlugin {
  apply(compiler) {
    // compiler.webpack ist in Webpack 5+ verfügbar
    const version = compiler.webpack?.version ?? webpack.version;
    console.log('Running on webpack', version);

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

Tip

Wenn Sie ein Plugin oder einen Loader schreiben, der sowohl Webpack 4 als auch Webpack 5 unterstützen muss, prüfen Sie `compiler.webpack` — es existiert in v5, aber nicht in v4. Verwenden Sie das als Versionssignal, statt den Versions-String zu parsen, da String-Parsing mit Pre-Release-Bezeichnern fehleranfällig ist.

Version in einer CI-Umgebung prüfen

In einer CI-Pipeline ist der sauberste Weg, die Webpack-Version zu protokollieren, ein Schritt, der `npx webpack --version` ausführt und die Ausgabe erfasst. Damit erhalten Sie die lokal installierte Version aus den exakten `node_modules`, die der Build verwenden wird, und sie erscheint bei jedem Lauf im Pipeline-Protokoll — nützlich beim Debuggen von Build-Fehlern, die nur auf bestimmten Runnern auftreten.

GitHub Actions - Webpack-Version vor dem Build protokollieren
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

Webpack-Major-Versionen im Vergleich

Die Unterschiede zwischen den Webpack-Major-Versionen zu verstehen, hilft Ihnen zu entscheiden, ob Ihre aktuelle Version für Ihr Projekt geeignet ist und was bei einer Migration zu erwarten ist. Hier ein kompakter Vergleich der Fähigkeiten und der Kompatibilitätslandschaft über alle fünf Major-Releases.

VersionNode.js erforderlichStatusKernmerkmal
webpack 1Beliebig (sehr alt)⛔ EOLUrsprünglicher CommonJS-Bundler
webpack 2Node.js ≥4⛔ EOLES-Modul-Tree-Shaking
webpack 3Node.js ≥6⛔ EOLScope Hoisting, dynamische Imports
webpack 4Node.js ≥6⚠️ Nur WartungZero-Config-Modus, Performance
webpack 5Node.js ≥10.13✓ AktivModule Federation, persistenter Cache

Webpack 4 vs. Webpack 5 - wesentliche Unterschiede

  • Persistenter Cache - Webpack 5 cacht Kompilationsergebnisse zwischen Läufen auf der Festplatte; ein warmer Cache kann Rebuilds 5-10× schneller machen als Webpack 4.
  • Module Federation - Webpack 5 führte Module Federation ein, um Code zwischen unabhängig deployten Frontends zur Laufzeit zu teilen.
  • Asset-Module - Webpack 5 ersetzt `file-loader`, `url-loader` und `raw-loader` durch eingebaute Asset-Modul-Typen (`asset/resource`, `asset/inline` usw.).
  • Node.js-Polyfills entfernt - Webpack 5 polyfillt Node.js-Kernmodule nicht mehr automatisch. Projekte, die von Polyfills für `buffer`, `path`, `stream` usw. abhingen, müssen sie explizit hinzufügen.
  • Langfristiges Caching - Webpack 5 verwendet standardmäßig deterministische Chunk-IDs, was stabile Dateinamen über Builds hinweg erzeugt und Browser-Cache-Trefferquoten verbessert.

Note

Webpack 4 wird noch breit genutzt und erhält gelegentlich Sicherheitsfixes, aber keine neuen Funktionen. Wenn Sie 2026 ein neues Projekt starten, verwenden Sie Webpack 5. Wenn Sie auf Webpack 4 sind und die Migrationskosten hoch sind, ist Verbleib auf 4 eine legitime Wahl — aber planen Sie das Upgrade, bevor die Tool-Unterstützung für Webpack-4-Plugins zu erodieren beginnt.

Webpack-Versionskonflikte beheben

Versionskonflikte zwischen Webpack und seinem Ökosystem sind die häufigste Quelle verwirrender Build-Fehler. Die meisten dieser Fehler lassen sich auf eine von drei Ursachen zurückführen: mehrere Webpack-Kopien in `node_modules`, ein für eine andere Major-Version gebauter Loader oder Plugin oder ein abweichender Peer-Dependency-Bereich.

Mehrere Webpack-Kopien in node_modules

Es ist möglich — und überraschend häufig —, mehr als eine Kopie von Webpack in Ihrem Projekt installiert zu haben. Das passiert, wenn eine Abhängigkeit eine Peer-Dependency auf Webpack mit einem anderen Major-Versionsbereich deklariert als Ihr Projekt verwendet. Das Ergebnis sind zwei inkompatible Webpack-Instanzen, wodurch Plugins still scheitern oder abstürzen, weil sie gegen die eine Instanz registriert, aber von der anderen aufgerufen werden.

Mehrere Webpack-Installationen erkennen
bash
# Mehrere Webpack-Einträge im vollen Abhängigkeitsbaum prüfen
npm list webpack --all

# Nach mehr als einer eindeutigen Versionsnummer in der Ausgabe suchen
# z. B. wenn sowohl [email protected] als auch [email protected] erscheinen,
# ist das ein Zeichen für widersprüchliche Peer-Dependencies

Peer-Dependency-Konflikte auflösen

Wenn `npm list webpack --all` mehrere Webpack-Versionen zeigt, schauen Sie, welches Paket die ältere Version hereinzieht. Aktualisieren Sie dieses Paket auf eine Version, die Ihre Webpack-Major-Version unterstützt, oder verwenden Sie das Feld `resolutions` (Yarn) bzw. `overrides` (npm 8+), um alle Pakete auf eine einzige Webpack-Version zu zwingen.

Eine einzige Webpack-Version erzwingen - npm overrides
json
{
  "overrides": {
    "webpack": "^5.88.0"
  }
}
Eine einzige Webpack-Version erzwingen - Yarn resolutions
json
{
  "resolutions": {
    "webpack": "^5.88.0"
  }
}

Semver-Bereiche validieren

Peer-Dependency-Bereiche wie `"webpack": "^4 || ^5"` und `"webpack": ">=4.41.0 <6"` sind gültige Semver-Ausdrücke, aber leicht falsch zu lesen. Der Semver-Validator von Aback Tools prüft jede Versionszeichenkette oder einen Bereichsausdruck gegen die Semver-2.0.0-Spezifikation — nützlich, wenn Sie eine Bibliothek schreiben, die einen Webpack-Peer-Dependency-Bereich deklariert, und bestätigen wollen, dass der Ausdruck korrekt geformt ist.

Warning

Wenn Sie `npm install --legacy-peer-deps` verwenden, um Peer-Dependency-Fehler zu umgehen, installieren Sie möglicherweise still inkompatible Versionen. Lösen Sie den tatsächlichen Konflikt, statt den Fehler zu unterdrücken — der Build kann zunächst funktionieren, aber subtile Bugs erzeugen oder in der Produktion scheitern, wenn ein Codepfad ausgeführt wird, der vom inkompatiblen Paket abhängt.

Semver-Validator

Validieren Sie jede semantische Versionszeichenkette oder einen Bereichsausdruck gegen die Semver-2.0.0-Spezifikation - sofort in Ihrem Browser.

Open tool

Best Practices für das Verwalten von Webpack-Versionen

Ihre aktuelle Webpack-Version zu kennen ist erst der Anfang. Sie gut zu verwalten — sodass die Version über Umgebungen hinweg konsistent bleibt, für jeden Beitragenden sichtbar ist und absichtlich statt versehentlich aktualisiert wird — erfordert ein paar einfache Praktiken.

  1. Exakte Versionen in devDependencies festpinnen - verwenden Sie `"webpack": "5.88.2"` statt `"^5.88.0"` für build-kritische Tools. Schwebende Bereiche lassen Patches die installierte Version zwischen `npm install`-Läufen auf verschiedenen Maschinen ändern, was die Build-Ausgabe nicht-deterministisch macht.
  2. Committen Sie Ihre Lockfile - `package-lock.json`, `yarn.lock` oder `pnpm-lock.yaml` müssen in die Versionskontrolle. Ohne sie installieren Beitragende und CI-Server unterschiedliche Patch-Versionen.
  3. Version in CI protokollieren - fügen Sie vor jedem Build-Job einen `npx webpack --version`-Schritt hinzu. Die Version erscheint in jedem CI-Protokoll, was die Korrelation von Build-Fehlern mit Versionsänderungen erleichtert.
  4. Abhängigkeiten nach Upgrades prüfen - wenn Sie Webpack aktualisieren, führen Sie sofort `npm list webpack --all` aus, um zu bestätigen, dass keine sekundären Kopien hineingeraten sind, und `npx webpack --version`, um zu bestätigen, dass die neue Version die ist, die Ihr Build verwendet.
  5. Vor dem Upgrade die Migrationsanleitung lesen - jede Webpack-Major-Version hat eine offizielle Migrationsanleitung auf `webpack.js.org`. Lesen Sie sie vor dem Upgrade — nicht danach, wenn der Build bricht.

Tip

Wenn ein Teammitglied einen Build-Fehler meldet, den Sie nicht reproduzieren können, ist die erste Frage: Was gibt `npx webpack --version` auf dessen Maschine aus? Versionsdrift zwischen Entwicklermaschinen ist eine der häufigsten Ursachen für „funktioniert auf meiner Maschine"-Build-Fehler in JavaScript-Projekten.

JavaScript-Beautifier

Formatieren und einrücken von minifiziertem oder unordentlichem JavaScript in Ihrem Browser - nützlich beim Inspizieren von Webpack-Output-Bundles oder generierten Config-Dateien.

Open tool

Key takeaways

  • Verwenden Sie `npx webpack --version` aus dem Projektstamm, um die lokal installierte Version zu prüfen — verlassen Sie sich nie auf die globale `webpack --version`-Ausgabe.
  • `npm list webpack` zeigt die installierte Version und ihre Position im Abhängigkeitsbaum; `npm list webpack --all` verrät, ob mehrere widersprüchliche Kopien existieren.
  • Die Lockfile (`package-lock.json`, `yarn.lock`, `pnpm-lock.yaml`) enthält die exakt aufgelöste Version — autoritativer als der Bereich in `package.json`.
  • Webpack 5 ist das aktuell aktive Release; Webpack 4 ist nur Wartung. Zu den wichtigsten Webpack-5-Neuerungen zählen persistenter Cache, Module Federation und eingebaute Asset-Module.
  • Mehrere Webpack-Kopien in `node_modules` verursachen stille Plugin-Fehler — erkennen mit `npm list webpack --all`, beheben mit `overrides` (npm) oder `resolutions` (Yarn).
  • Pinpen Sie exakte Webpack-Versionen in devDependencies und committen Sie Ihre Lockfile, damit jeder Entwickler und CI-Runner dieselbe Version verwendet.
  • Prüfen Sie beim Debuggen eines Build-Fehlers immer zuerst die Webpack-Version — ein Versionskonflikt zwischen Webpack und einem Loader oder Plugin ist öfter die Ursache, als die Fehlermeldung vermuten lässt.

Häufige Fragen

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