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.
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
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.
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.
# 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 --versionLa 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.
# 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 webpackLa 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érification de l'installation globale
webpack --version
# Ou explicitement depuis le chemin global
npm list -g webpackWarning
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.
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.
{
"devDependencies": {
"webpack": "^5.88.0",
"webpack-cli": "^5.1.4",
"webpack-dev-server": "^4.15.1"
}
}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.
# 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 -10Validez 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.
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
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`.
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
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.
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 buildComparaison 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.
| Version | Node.js requis | Statut | Fonctionnalité clé |
|---|---|---|---|
| webpack 1 | Toute (très ancienne) | ⛔ EOL | Bundler CommonJS original |
| webpack 2 | Node.js ≥4 | ⛔ EOL | Tree-shaking des modules ES |
| webpack 3 | Node.js ≥6 | ⛔ EOL | Scope hoisting, imports dynamiques |
| webpack 4 | Node.js ≥6 | ⚠️ Maintenance seulement | Mode zéro-config, performance |
| webpack 5 | Node.js ≥10.13 | ✓ Actif | Module 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
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.
# 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 conflitRé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.
{
"overrides": {
"webpack": "^5.88.0"
}
}{
"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
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.
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.
- 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.
- 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.
- 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.
- 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.
- 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
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.
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.