Aller au contenu
Aback Tools Logo

Comment Vérifier la Version de Webpack : Terminal, package.json et Config

Comment vérifier votre version de webpack : commandes npx et npm list, inspection du fichier de verrouillage, lecture de webpack.version dans la config ou les plugins, diagnostic des conflits de versions et différences entre webpack 4 et 5.

DH
Tutorials & How-Tos12 min de lecture2,600 mots

Savoir quelle version de webpack votre projet exécute compte plus que la plupart des développeurs ne le réalisent. Les écarts de version entre webpack, ses loaders et ses plugins sont l'une des causes les plus courantes d'erreurs de build cryptiques — des erreurs qui disparaissent dès que vous alignez tout sur la même version majeure. Ce guide couvre toutes les méthodes pour vérifier votre version de webpack : d'une simple commande de terminal à l'inspection des fichiers de verrouillage, la lecture de la config webpack et la compréhension de ce que signifie réellement le numéro de version pour votre build.

< 5sTemps pour vérifier la versionAvec toute méthode ci-dessous
5Versions majeures de webpackDe la v1 à la v5
4→5Migration la plus couranteLes changements cassants exigent du soin

Pourquoi votre version de webpack compte

Les cinq versions majeures de webpack ne sont pas des remplacements directs les unes des autres. Chaque version majeure a introduit des changements cassants dans la syntaxe de configuration, la compatibilité des loaders et les API de plugins. Une config webpack 4 ne fonctionnera pas avec webpack 5 sans modifications, et les loaders publiés pour webpack 3 peuvent échouer silencieusement ou produire une sortie incorrecte avec webpack 4+.

Au-delà de la compatibilité de configuration, la version de webpack affecte les performances. Webpack 5 a introduit la mise en cache persistante, la Module Federation et un tree-shaking amélioré qui peuvent réduire considérablement les temps de build et les tailles de bundle par rapport à webpack 4. Si vous déboguez un build lent ou enquêtez sur une régression de taille de bundle, confirmer la version est la première étape de diagnostic.

Quand les conflits de versions provoquent des erreurs

  • Incompatibilité de loaders - `babel-loader` v8 cible webpack 4 ; l'utiliser avec webpack 5 sans mise à jour provoque une mauvaise configuration silencieuse.
  • Divergences d'API de plugins - les plugins qui se greffent au compilateur webpack utilisent une API qui a changé entre la v4 et la v5. Un plugin conçu pour la v4 échouera sur un objet compilateur v5.
  • Conflits de peer dependencies - des outils comme `webpack-dev-server`, `html-webpack-plugin` et `mini-css-extract-plugin` publient des versions liées à des versions majeures spécifiques de webpack.
  • Erreurs de schéma de css-loader - css-loader v5 et v6 ont une validation de schéma stricte ; un écart de version avec webpack produit l'erreur « ValidationError: Invalid options object ».

Note

Si vous avez récemment mis à jour Node.js et que votre build webpack a commencé à échouer, la matrice de compatibilité des versions de Node.js mérite aussi d'être consultée. Webpack 4 a abandonné le support de Node.js inférieur à v6 ; webpack 5 exige Node.js 10.13 ou supérieur. La plupart des projets activement maintenus exigent désormais Node.js 14+.

Comment vérifier la version de webpack depuis le terminal

Le terminal est le moyen le plus rapide et le plus fiable de vérifier votre version de webpack. Trois commandes méritent d'être connues, chacune adaptée à une situation légèrement différente.

Webpack est installé localement dans votre projet comme devDependency. La version installée globalement, s'il y en a une, n'est presque jamais celle que votre build utilise réellement.

- Documentation Webpack

La version locale du projet (la plus fiable)

Votre projet installe presque certainement webpack comme devDependency locale, pas comme paquet global. Pour vérifier la version que vos scripts de build utilisent réellement, exécutez `npx` ou `./node_modules/.bin/webpack` directement depuis la racine du projet. Ces commandes contournent toute installation globale de webpack et rapportent la version installée localement.

Vérifier la version de webpack installée localement
bash
# La plus fiable - utilise l'installation locale de node_modules
npx webpack --version

# Invocation alternative par chemin
./node_modules/.bin/webpack --version

# Avec yarn
yarn webpack --version

# Pnpm
pnpm exec webpack --version

La commande npm list

`npm list webpack` interroge vos `node_modules` locaux et affiche la version installée avec sa position dans l'arbre de dépendances. C'est utile quand vous voulez voir non seulement la version mais aussi quel paquet a exigé webpack comme peer dependency — une source courante de conflits de versions quand un outil de build dépend d'une plage spécifique de webpack.

Vérifier la version de webpack avec npm list
bash
# Afficher la version de webpack dans node_modules local
npm list webpack

# Afficher tous les paquets de l'arbre qui dépendent de webpack
npm list webpack --all

# Équivalent yarn
yarn list --pattern webpack

# Équivalent pnpm
pnpm list webpack

La version installée globalement

Si vous avez installé webpack globalement avec `npm install -g webpack webpack-cli`, vous pouvez vérifier cette version séparément. Sachez que la version globale est rarement celle utilisée par les builds de votre projet — la plupart des scripts de build invoquent webpack via les scripts de `package.json`, qui résolvent toujours vers l'installation locale.

Vérifier webpack installé globalement
bash
# Vérification de l'installation globale
webpack --version

# Ou explicitement depuis le chemin global
npm list -g webpack

Warning

Ne supposez jamais que la sortie de `webpack --version` (sans `npx`) est la version utilisée par votre projet. Si votre PATH résout vers un webpack installé globalement, la version rapportée peut être totalement différente de celle des `node_modules` de votre projet. Utilisez toujours `npx webpack --version` depuis la racine de votre projet pour un résultat précis.

Comment trouver la version de webpack dans package.json

Le fichier `package.json` de votre projet liste la plage de versions de webpack déclarée comme dépendance. Ce n'est pas la même chose que la version installée — c'est la plage spécifiée quand webpack a été ajouté, et la version réellement installée peut être n'importe quelle version de cette plage.

1

Ouvrez package.json et regardez dans devDependencies

Webpack figure presque toujours sous `devDependencies`, pas `dependencies`. Ouvrez votre `package.json` et cherchez la clé `"webpack"` dans le bloc `devDependencies`. La valeur est une plage semver — `"^5.88.0"` signifie « toute version compatible avec 5.88.0 », tandis que `"5.88.0"` (sans caret) fige exactement cette version.

Entrée webpack typique dans package.json
json
{
  "devDependencies": {
    "webpack": "^5.88.0",
    "webpack-cli": "^5.1.4",
    "webpack-dev-server": "^4.15.1"
  }
}
2

Consultez le fichier de verrouillage pour la version résolue exacte

La plage de `package.json` indique la contrainte déclarée. Le fichier de verrouillage — `package-lock.json`, `yarn.lock` ou `pnpm-lock.yaml` — indique la version exacte réellement installée. Cherchez `"webpack"` dans votre fichier de verrouillage pour trouver la chaîne de version résolue. C'est la version que chaque machine clonant le dépôt installera, ce qui en fait l'enregistrement le plus autoritaire de ce qui s'exécute.

Trouver la version exacte dans les fichiers de verrouillage
bash
# Dans package-lock.json (npm)
grep '"webpack"' package-lock.json | head -5

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

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

Validez les plages de dépendances de votre package.json

Si vous voulez auditer la santé de toutes les dépendances de votre `package.json` — pas seulement webpack — le vérificateur de santé des dépendances package.json d'Aback Tools analyse toute votre liste de dépendances à la recherche de motifs de versions risqués, de plages flottantes, de paquets obsolètes et de lacunes de reproductibilité. Collez votre `package.json` et obtenez un rapport de santé exploitable en quelques secondes.

Vérificateur de Santé des Dépendances package.json

Collez votre package.json pour détecter les plages de versions risquées, les dépendances obsolètes et les lacunes de reproductibilité - entièrement dans votre navigateur sans téléversement.

Open tool

Vérifier la version de webpack depuis une config ou un script

Parfois, vous devez connaître la version de webpack au moment du build — par exemple pour appliquer une branche de configuration différente selon la version majeure, ou pour consigner des informations de diagnostic dans un pipeline CI. Webpack expose sa version comme propriété de l'objet compilateur, et le paquet webpack lui-même exporte une chaîne `version`.

Lire la version dans webpack.config.js

webpack.config.js - consigner ou brancher selon la version
javascript
const webpack = require('webpack');

// La chaîne de version est disponible directement
console.log('Webpack version:', webpack.version);

// Utilisez-la pour appliquer la configuration conditionnellement
const isWebpack5 = parseInt(webpack.version, 10) >= 5;

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

Lire la version dans un plugin ou un loader personnalisé

Dans un plugin webpack, l'objet compilateur porte la version de webpack via `compiler.webpack.version`. C'est la vérification programmatique la plus sûre car elle lit la version de l'instance de webpack qui a invoqué le plugin — pas celle qui se trouve par hasard dans `node_modules`.

Lire la version dans un plugin webpack
javascript
class MyPlugin {
  apply(compiler) {
    // compiler.webpack est disponible dans 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 vous écrivez un plugin ou un loader devant prendre en charge webpack 4 et webpack 5, vérifiez `compiler.webpack` — il existe en v5 mais pas en v4. Utilisez-le comme signal de version plutôt que d'analyser la chaîne de version, l'analyse de chaînes étant fragile avec les identifiants de pré-release.

Vérifier la version dans un environnement CI

Dans un pipeline CI, la façon la plus propre de consigner la version de webpack est d'ajouter une étape qui exécute `npx webpack --version` et capture la sortie. Cela vous donne la version installée localement depuis les `node_modules` exacts que le build utilisera, et elle apparaît dans le journal du pipeline à chaque exécution — utile pour déboguer des échecs de build qui n'apparaissent que sur certains runners.

GitHub Actions - consigner la version de webpack avant le 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

Comparaison des versions majeures de webpack

Comprendre les différences entre les versions majeures de webpack vous aide à décider si votre version actuelle convient à votre projet et à quoi vous attendre si vous migrez. Voici une comparaison concise des capacités et du paysage de compatibilité des cinq versions majeures.

VersionNode.js requisStatutFonctionnalité clé
webpack 1Toute (très ancienne)⛔ EOLBundler CommonJS original
webpack 2Node.js ≥4⛔ EOLTree-shaking des modules ES
webpack 3Node.js ≥6⛔ EOLScope hoisting, imports dynamiques
webpack 4Node.js ≥6⚠️ Maintenance seulementMode zéro-config, performance
webpack 5Node.js ≥10.13✓ ActifModule Federation, cache persistant

Webpack 4 vs webpack 5 - différences clés

  • Cache persistant - webpack 5 met en cache les résultats de compilation sur disque entre les exécutions ; un cache chaud peut rendre les rebuilds 5 à 10 fois plus rapides qu'avec webpack 4.
  • Module Federation - webpack 5 a introduit la Module Federation pour partager du code entre des frontends déployés indépendamment à l'exécution.
  • Modules d'assets - webpack 5 remplace `file-loader`, `url-loader` et `raw-loader` par des types de modules d'assets intégrés (`asset/resource`, `asset/inline`, etc.).
  • Polyfills Node.js supprimés - webpack 5 ne polyfill plus automatiquement les modules core de Node.js. Les projets qui dépendaient de polyfills pour `buffer`, `path`, `stream`, etc. doivent les ajouter explicitement.
  • Cache à long terme - webpack 5 utilise des IDs de chunks déterministes par défaut, produisant des noms de fichiers stables entre les builds qui améliorent les taux d'accès au cache du navigateur.

Note

Webpack 4 est encore largement utilisé et reçoit parfois des correctifs de sécurité, mais pas de nouvelles fonctionnalités. Si vous démarrez un nouveau projet en 2026, utilisez webpack 5. Si vous êtes sur webpack 4 et que le coût de migration est élevé, rester sur la 4 est un choix valide — mais planifiez la mise à niveau avant que le support des outils pour les plugins webpack 4 ne commence à s'éroder.

Résoudre les conflits de versions de webpack

Les conflits de versions entre webpack et son écosystème sont la source la plus courante d'erreurs de build déroutantes. La plupart de ces erreurs remontent à l'une de trois causes racines : plusieurs copies de webpack dans `node_modules`, un loader ou plugin conçu pour une version majeure différente, ou un écart de plage de peer dependency.

Plusieurs copies de webpack dans node_modules

C'est possible — et étonnamment courant — d'avoir plus d'une copie de webpack installée dans votre projet. Cela arrive quand une dépendance déclare une peer dependency sur webpack avec une plage de version majeure différente de celle de votre projet. Le résultat est deux instances de webpack incompatibles, ce qui fait que les plugins échouent silencieusement ou plantent parce qu'ils sont enregistrés auprès d'une instance mais invoqués par une autre.

Détecter plusieurs installations de webpack
bash
# Vérifier les multiples entrées webpack dans l'arbre complet des dépendances
npm list webpack --all

# Chercher plus d'un numéro de version unique dans la sortie
# p. ex., voir apparaître à la fois [email protected] et [email protected]
# est un signe de peer dependencies en conflit

Résoudre les conflits de peer dependencies

Quand `npm list webpack --all` montre plusieurs versions de webpack, regardez quel paquet tire l'ancienne version. Mettez ce paquet à jour vers une version qui prend en charge votre version majeure de webpack, ou utilisez le champ `resolutions` (Yarn) ou `overrides` (npm 8+) pour forcer tous les paquets à utiliser une seule version de webpack.

Forcer une seule version de webpack - overrides npm
json
{
  "overrides": {
    "webpack": "^5.88.0"
  }
}
Forcer une seule version de webpack - resolutions Yarn
json
{
  "resolutions": {
    "webpack": "^5.88.0"
  }
}

Valider les plages semver

Les plages de peer dependencies comme `"webpack": "^4 || ^5"` et `"webpack": ">=4.41.0 <6"` sont des expressions semver valides mais faciles à mal lire. Le validateur semver d'Aback Tools vérifie toute chaîne de version ou expression de plage contre la spécification Semver 2.0.0 — utile quand vous écrivez une bibliothèque qui déclare une plage de peer dependency webpack et voulez confirmer que l'expression est correctement formée.

Warning

Si vous utilisez `npm install --legacy-peer-deps` pour contourner les erreurs de peer dependencies, vous installez peut-être silencieusement des versions incompatibles. Résolvez le conflit réel au lieu de supprimer l'erreur — le build peut fonctionner au début mais produire des bugs subtils ou échouer en production quand un chemin de code qui dépend du paquet incompatible est exécuté.

Validateur Semver

Validez toute chaîne de version sémantique ou expression de plage contre la spécification Semver 2.0.0 - instantanément dans votre navigateur.

Open tool

Bonnes pratiques pour gérer les versions de webpack

Connaître votre version actuelle de webpack n'est que le début. Bien la gérer — pour que la version reste cohérente entre les environnements, soit visible de chaque contributeur et soit mise à jour délibérément plutôt qu'accidentellement — exige quelques pratiques simples.

  1. Figez les versions exactes dans devDependencies - utilisez `"webpack": "5.88.2"` plutôt que `"^5.88.0"` pour les outils critiques du build. Les plages flottantes permettent aux correctifs de changer la version installée entre les exécutions de `npm install` sur différentes machines, rendant la sortie du build non déterministe.
  2. Commitez votre fichier de verrouillage - `package-lock.json`, `yarn.lock` ou `pnpm-lock.yaml` doivent être commités dans le contrôle de version. Sans lui, les contributeurs et serveurs CI installent des versions de correctif différentes.
  3. Consignez la version en CI - ajoutez une étape `npx webpack --version` avant chaque job de build. La version apparaît dans chaque journal CI, facilitant la corrélation entre échecs de build et changements de version.
  4. Auditez les dépendances après les mises à niveau - quand vous mettez à jour webpack, exécutez immédiatement `npm list webpack --all` pour confirmer qu'aucune copie secondaire ne s'est glissée, et `npx webpack --version` pour confirmer que la nouvelle version est bien celle utilisée par votre build.
  5. Lisez le guide de migration avant de mettre à niveau - chaque version majeure de webpack a un guide de migration officiel sur `webpack.js.org`. Lisez-le avant de mettre à niveau — pas après que le build a cassé.

Tip

Quand un collègue signale une erreur de build que vous ne pouvez pas reproduire, la première question est : que affiche `npx webpack --version` sur sa machine ? La dérive de versions entre machines de développement est l'une des sources les plus courantes d'échecs de build « ça marche sur ma machine » dans les projets JavaScript.

Embellisseur JavaScript

Formatez et indentez du JavaScript minifié ou désordonné dans votre navigateur - utile pour inspecter les bundles de sortie webpack ou les fichiers de config générés.

Open tool

Key takeaways

  • Utilisez `npx webpack --version` depuis la racine de votre projet pour vérifier la version installée localement — ne vous fiez jamais à la sortie globale de `webpack --version`.
  • `npm list webpack` montre la version installée et sa position dans l'arbre de dépendances ; `npm list webpack --all` révèle s'il existe plusieurs copies en conflit.
  • Le fichier de verrouillage (`package-lock.json`, `yarn.lock`, `pnpm-lock.yaml`) contient la version résolue exacte — plus autoritaire que la plage de `package.json`.
  • Webpack 5 est la version active actuelle ; webpack 4 est en maintenance seule. Les ajouts clés de webpack 5 incluent le cache persistant, la Module Federation et les modules d'assets intégrés.
  • Plusieurs copies de webpack dans `node_modules` causent des échecs silencieux de plugins — détectez avec `npm list webpack --all` et corrigez avec `overrides` (npm) ou `resolutions` (Yarn).
  • Figez les versions exactes de webpack dans devDependencies et commitez votre fichier de verrouillage pour garantir que chaque développeur et runner CI utilise la même version.
  • Vérifiez toujours d'abord la version de webpack quand vous déboguez une erreur de build — un écart de version entre webpack et un loader ou plugin est la cause plus souvent que le message d'erreur ne le suggère.

Questions fréquentes

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