Lompat ke konten
Aback Tools Logo

Cara Memeriksa Versi Webpack: Terminal, package.json dan Config

Cara memeriksa versi webpack Anda: perintah npx dan npm list, inspeksi lock file, membaca webpack.version di config atau plugin, mendiagnosis konflik versi, dan perbedaan webpack 4 vs 5.

DH
Tutorials & How-Tos12 menit baca2,600 kata

Mengetahui versi webpack mana yang dijalankan proyek Anda lebih penting daripada yang disadari sebagian besar pengembang. Ketidakcocokan versi antara webpack, loader-nya, dan plugin-nya adalah salah satu penyebab paling umum dari error build yang samar — error yang hilang begitu Anda menyelaraskan semuanya ke versi mayor yang sama. Panduan ini mencakup semua metode untuk memeriksa versi webpack Anda: dari satu perintah terminal hingga memeriksa lock file, membaca config webpack, dan memahami apa yang sebenarnya dimaksud dengan nomor versi bagi build Anda.

< 5sWaktu memeriksa versiDengan metode mana pun di bawah
5Versi mayor webpackdari v1 hingga v5
4→5Migrasi paling umumPerubahan yang merusak butuh kehati-hatian

Mengapa versi webpack Anda penting

Lima versi mayor webpack bukanlah pengganti drop-in satu sama lain. Setiap rilis mayor memperkenalkan perubahan yang merusak pada sintaks konfigurasi, kompatibilitas loader, dan API plugin. Config webpack 4 tidak akan bekerja dengan webpack 5 tanpa modifikasi, dan loader yang dipublikasikan untuk webpack 3 bisa gagal secara diam-diam atau menghasilkan output yang salah di webpack 4+.

Di luar kompatibilitas konfigurasi, versi webpack memengaruhi performa. Webpack 5 memperkenalkan caching persisten, Module Federation, dan tree-shaking yang ditingkatkan yang dapat memangkas waktu build dan ukuran bundle secara signifikan dibandingkan webpack 4. Jika Anda sedang men-debug build yang lambat atau menyelidiki regresi ukuran bundle, mengonfirmasi versi adalah langkah diagnostik pertama.

Ketika konflik versi menyebabkan error

  • Ketidakcocokan loader - `babel-loader` v8 menargetkan webpack 4; menggunakannya dengan webpack 5 tanpa memperbarui menyebabkan kesalahan konfigurasi secara diam-diam.
  • Ketidakcocokan API plugin - plugin yang mengaitkan diri ke compiler webpack menggunakan API yang berubah antara v4 dan v5. Plugin yang dibuat untuk v4 akan error pada objek compiler v5.
  • Konflik peer dependency - alat seperti `webpack-dev-server`, `html-webpack-plugin`, dan `mini-css-extract-plugin` menerbitkan versi yang terikat pada versi mayor webpack tertentu.
  • Error skema css-loader - css-loader v5 dan v6 memiliki validasi skema yang ketat; ketidakcocokan versi dengan webpack menghasilkan error "ValidationError: Invalid options object".

Note

Jika Anda baru saja meningkatkan Node.js dan build webpack Anda mulai gagal, matriks kompatibilitas versi Node.js juga layak diperiksa. Webpack 4 menghapus dukungan untuk Node.js di bawah v6; webpack 5 membutuhkan Node.js 10.13 atau lebih tinggi. Sebagian besar proyek yang aktif dirawat kini mensyaratkan Node.js 14+.

Cara memeriksa versi webpack dari terminal

Terminal adalah cara tercepat dan paling andal untuk memeriksa versi webpack Anda. Ada tiga perintah yang patut diketahui, masing-masing cocok untuk situasi yang sedikit berbeda.

Webpack terinstal secara lokal di proyek Anda sebagai devDependency. Versi yang terinstal secara global, jika ada, hampir tidak pernah menjadi yang benar-benar digunakan build Anda.

- Dokumentasi Webpack

Versi lokal proyek (paling andal)

Proyek Anda hampir pasti menginstal webpack sebagai devDependency lokal, bukan paket global. Untuk memeriksa versi yang benar-benar digunakan skrip build Anda, jalankan `npx` atau `./node_modules/.bin/webpack` langsung dari root proyek. Perintah-perintah ini melewati instalasi webpack global apa pun dan melaporkan versi yang terinstal secara lokal.

Memeriksa versi webpack yang terinstal lokal
bash
# Paling andal - menggunakan instalasi node_modules lokal
npx webpack --version

# Invokasi alternatif berbasis jalur
./node_modules/.bin/webpack --version

# Menggunakan yarn
yarn webpack --version

# Pnpm
pnpm exec webpack --version

Perintah npm list

`npm list webpack` menanyakan `node_modules` lokal Anda dan mencetak versi yang terinstal beserta posisinya di pohon dependensi. Ini berguna ketika Anda ingin melihat bukan hanya versinya tetapi juga paket mana yang mengharuskan webpack sebagai peer dependency — sumber umum konflik versi ketika alat build bergantung pada rentang webpack tertentu.

Memeriksa versi webpack dengan npm list
bash
# Menampilkan versi webpack di node_modules lokal
npm list webpack

# Menampilkan semua paket di pohon yang bergantung pada webpack
npm list webpack --all

# Padanan yarn
yarn list --pattern webpack

# Padanan pnpm
pnpm list webpack

Versi yang terinstal global

Jika Anda menginstal webpack secara global dengan `npm install -g webpack webpack-cli`, Anda dapat memeriksa versi itu secara terpisah. Ketahuilah bahwa versi global jarang menjadi yang digunakan build proyek Anda — sebagian besar skrip build memanggil webpack melalui skrip `package.json`, yang selalu menyelesaikan ke instalasi lokal.

Memeriksa webpack yang terinstal global
bash
# Pemeriksaan instalasi global
webpack --version

# Atau secara eksplisit dari jalur global
npm list -g webpack

Warning

Jangan pernah berasumsi bahwa output `webpack --version` (tanpa `npx`) adalah versi yang digunakan proyek Anda. Jika PATH Anda menyelesaikan ke webpack yang terinstal global, versi yang dilaporkan bisa sangat berbeda dari yang ada di `node_modules` proyek Anda. Selalu gunakan `npx webpack --version` dari root proyek Anda untuk hasil yang akurat.

Cara menemukan versi webpack di package.json

File `package.json` proyek Anda mencantumkan rentang versi webpack yang dideklarasikan proyek sebagai dependensi. Ini tidak sama dengan versi yang terinstal — itu adalah rentang yang ditentukan saat webpack ditambahkan, dan versi yang benar-benar terinstal bisa berupa versi apa pun dalam rentang tersebut.

1

Buka package.json dan lihat di devDependencies

Webpack hampir selalu tercantum di `devDependencies`, bukan `dependencies`. Buka `package.json` Anda dan cari kunci `"webpack"` di blok `devDependencies`. Nilainya adalah rentang semver — `"^5.88.0"` berarti "versi apa pun yang kompatibel dengan 5.88.0", sedangkan `"5.88.0"` (tanpa caret) mengunci tepat versi tersebut.

Entri webpack yang khas di package.json
json
{
  "devDependencies": {
    "webpack": "^5.88.0",
    "webpack-cli": "^5.1.4",
    "webpack-dev-server": "^4.15.1"
  }
}
2

Periksa lock file untuk versi ter-resolve yang tepat

Rentang `package.json` memberi tahu Anda batasan yang dideklarasikan. Lock file — `package-lock.json`, `yarn.lock`, atau `pnpm-lock.yaml` — memberi tahu Anda versi tepat yang benar-benar terinstal. Cari `"webpack"` di lock file Anda untuk menemukan string versi ter-resolve. Inilah versi yang akan diinstal oleh setiap mesin yang meng-clone repo, menjadikannya catatan paling otoritatif tentang apa yang sedang berjalan.

Menemukan versi tepat di lock file
bash
# Di package-lock.json (npm)
grep '"webpack"' package-lock.json | head -5

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

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

Validasi rentang dependensi package.json Anda

Jika Anda ingin mengaudit kesehatan semua dependensi di `package.json` Anda — bukan hanya webpack — pemeriksa kesehatan dependensi package.json dari Aback Tools menganalisis seluruh daftar dependensi Anda untuk pola versi berisiko, rentang mengambang, paket usang, dan celah reproduksibilitas. Tempelkan `package.json` Anda dan dapatkan laporan kesehatan yang dapat ditindaklanjuti dalam hitungan detik.

Pemeriksa Kesehatan Dependensi package.json

Tempelkan package.json Anda untuk mendeteksi rentang versi berisiko, dependensi usang, dan celah reproduksibilitas - sepenuhnya di peramban Anda tanpa unggahan.

Open tool

Memeriksa versi webpack dari dalam config atau skrip

Kadang Anda perlu tahu versi webpack pada saat build — misalnya, untuk menerapkan cabang konfigurasi yang berbeda sesuai versi mayor, atau untuk mencatat informasi diagnostik di pipeline CI. Webpack mengekspos versinya sebagai properti pada objek compiler, dan paket webpack sendiri mengekspor string `version`.

Membaca versi di webpack.config.js

webpack.config.js - mencatat log atau bercabang berdasarkan versi
javascript
const webpack = require('webpack');

// String versi tersedia secara langsung
console.log('Webpack version:', webpack.version);

// Gunakan untuk menerapkan konfigurasi secara kondisional
const isWebpack5 = parseInt(webpack.version, 10) >= 5;

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

Membaca versi di plugin atau loader kustom

Di dalam plugin webpack, objek compiler membawa versi webpack melalui `compiler.webpack.version`. Ini adalah pemeriksaan programatik paling aman karena membaca versi instance webpack yang memanggil plugin — bukan versi apa pun yang kebetulan terinstal di `node_modules`.

Membaca versi di dalam plugin webpack
javascript
class MyPlugin {
  apply(compiler) {
    // compiler.webpack tersedia di webpack 5+
    const version = compiler.webpack?.version ?? webpack.version;
    console.log('Running on webpack', version);

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

Tip

Jika Anda menulis plugin atau loader yang perlu mendukung webpack 4 dan webpack 5, periksa `compiler.webpack` — ada di v5 tetapi tidak di v4. Gunakan itu sebagai sinyal versi alih-alih mem-parsing string versi, karena parsing string rapuh dengan identifier pre-release.

Memeriksa versi di lingkungan CI

Di pipeline CI, cara terbersih untuk mencatat versi webpack adalah menambahkan langkah yang menjalankan `npx webpack --version` dan menangkap outputnya. Ini memberi Anda versi yang terinstal lokal dari `node_modules` persis yang akan digunakan build, dan muncul di log pipeline untuk setiap eksekusi — berguna untuk men-debug kegagalan build yang hanya muncul di runner tertentu.

GitHub Actions - mencatat versi webpack sebelum 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

Perbandingan versi mayor webpack

Memahami perbedaan antara versi mayor webpack membantu Anda memutuskan apakah versi Anda saat ini sesuai untuk proyek, dan apa yang diharapkan jika bermigrasi. Berikut perbandingan ringkas kemampuan dan lanskap kompatibilitas di kelima rilis mayor.

VersiNode.js yang dibutuhkanStatusFitur utama
webpack 1Apa saja (sangat lama)⛔ EOLBundler CommonJS asli
webpack 2Node.js ≥4⛔ EOLTree-shaking modul ES
webpack 3Node.js ≥6⛔ EOLScope hoisting, impor dinamis
webpack 4Node.js ≥6⚠️ Hanya pemeliharaanMode zero-config, performa
webpack 5Node.js ≥10.13✓ AktifModule Federation, cache persisten

Webpack 4 vs webpack 5 - perbedaan utama

  • Cache persisten - webpack 5 meng-cache hasil kompilasi ke disk antar eksekusi; cache hangat dapat membuat rebuild 5-10× lebih cepat daripada webpack 4.
  • Module Federation - webpack 5 memperkenalkan Module Federation untuk berbagi kode antara frontend yang di-deploy secara independen saat runtime.
  • Modul aset - webpack 5 menggantikan `file-loader`, `url-loader`, dan `raw-loader` dengan tipe modul aset bawaan (`asset/resource`, `asset/inline`, dll.).
  • Polyfill Node.js dihapus - webpack 5 tidak lagi otomatis mem-polyfill modul inti Node.js. Proyek yang bergantung pada polyfill untuk `buffer`, `path`, `stream`, dll. harus menambahkannya secara eksplisit.
  • Caching jangka panjang - webpack 5 menggunakan ID chunk deterministik secara default, menghasilkan nama file yang stabil antar build yang meningkatkan tingkat hit cache peramban.

Note

Webpack 4 masih banyak digunakan dan menerima perbaikan keamanan sesekali, tetapi tanpa fitur baru. Jika Anda memulai proyek baru pada 2026, gunakan webpack 5. Jika Anda berada di webpack 4 dan biaya migrasinya tinggi, bertahan di 4 adalah pilihan yang sah — tetapi rencanakan peningkatan sebelum dukungan tooling untuk plugin webpack 4 mulai terkikis.

Mengatasi konflik versi webpack

Konflik versi antara webpack dan ekosistemnya adalah sumber paling umum dari error build yang membingungkan. Sebagian besar error ini bermula dari salah satu dari tiga akar penyebab: beberapa salinan webpack di `node_modules`, loader atau plugin yang dibuat untuk versi mayor berbeda, atau ketidakcocokan rentang peer dependency.

Beberapa salinan webpack di node_modules

Sangat mungkin — dan cukup umum terjadi — memiliki lebih dari satu salinan webpack yang terinstal di proyek Anda. Ini terjadi ketika sebuah dependensi mendeklarasikan peer dependency pada webpack dengan rentang versi mayor yang berbeda dari yang digunakan proyek Anda. Hasilnya adalah dua instance webpack yang tidak kompatibel, yang menyebabkan plugin gagal diam-diam atau crash karena terdaftar pada satu instance tetapi dipanggil oleh yang lain.

Mendeteksi beberapa instalasi webpack
bash
# Memeriksa beberapa entri webpack di pohon dependensi penuh
npm list webpack --all

# Cari lebih dari satu nomor versi unik di output
# misalnya, munculnya [email protected] dan [email protected] sekaligus
# adalah tanda peer dependency yang berkonflik

Menyelesaikan konflik peer dependency

Ketika `npm list webpack --all` menunjukkan beberapa versi webpack, lihat paket mana yang menarik versi lama. Perbarui paket tersebut ke versi yang mendukung versi mayor webpack Anda, atau gunakan field `resolutions` (Yarn) atau `overrides` (npm 8+) untuk memaksa semua paket menggunakan satu versi webpack.

Memaksa satu versi webpack - overrides npm
json
{
  "overrides": {
    "webpack": "^5.88.0"
  }
}
Memaksa satu versi webpack - resolutions Yarn
json
{
  "resolutions": {
    "webpack": "^5.88.0"
  }
}

Memvalidasi rentang semver

Rentang peer dependency seperti `"webpack": "^4 || ^5"` dan `"webpack": ">=4.41.0 <6"` adalah ekspresi semver yang valid tetapi mudah salah dibaca. Validator semver dari Aback Tools memeriksa string versi atau ekspresi rentang apa pun terhadap spesifikasi Semver 2.0.0 — berguna ketika Anda menulis library yang mendeklarasikan rentang peer dependency webpack dan ingin memastikan ekspresinya terbentuk dengan benar.

Warning

Jika Anda menggunakan `npm install --legacy-peer-deps` untuk melewati error peer dependency, Anda mungkin menginstal versi yang tidak kompatibel secara diam-diam. Selesaikan konflik yang sebenarnya daripada menekan error — build mungkin bekerja awalnya tetapi menghasilkan bug halus atau gagal di produksi ketika jalur kode yang bergantung pada paket tidak kompatibel dieksekusi.

Validator Semver

Validasi string versi semantik atau ekspresi rentang apa pun terhadap spesifikasi Semver 2.0.0 - secara instan di peramban Anda.

Open tool

Praktik terbaik untuk mengelola versi webpack

Mengetahui versi webpack Anda saat ini hanyalah awal. Mengelolanya dengan baik — agar versi tetap konsisten di berbagai lingkungan, terlihat oleh setiap kontributor, dan diperbarui secara disengaja bukan secara tak sengaja — membutuhkan beberapa praktik sederhana.

  1. Kunci versi tepat di devDependencies - gunakan `"webpack": "5.88.2"` alih-alih `"^5.88.0"` untuk alat yang kritis bagi build. Rentang mengambang memungkinkan patch mengubah versi yang terinstal antara eksekusi `npm install` di mesin yang berbeda, membuat output build tidak deterministik.
  2. Commit lock file Anda - `package-lock.json`, `yarn.lock`, atau `pnpm-lock.yaml` harus di-commit ke version control. Tanpanya, kontributor dan server CI menginstal versi patch yang berbeda.
  3. Catat versi di CI - tambahkan langkah `npx webpack --version` sebelum setiap job build. Versinya muncul di setiap log CI, memudahkan mengaitkan kegagalan build dengan perubahan versi.
  4. Audit dependensi setelah peningkatan - saat memperbarui webpack, segera jalankan `npm list webpack --all` untuk memastikan tidak ada salinan sekunder yang masuk, dan `npx webpack --version` untuk memastikan versi baru adalah yang digunakan build Anda.
  5. Baca panduan migrasi sebelum meningkatkan - setiap versi mayor webpack punya panduan migrasi resmi di `webpack.js.org`. Baca sebelum meningkatkan — bukan setelah build rusak.

Tip

Ketika rekan satu tim melaporkan error build yang tidak bisa Anda reproduksi, pertanyaan pertama adalah: apa output `npx webpack --version` di mesinnya? Penyimpangan versi antar mesin pengembang adalah salah satu sumber paling umum kegagalan build "berfungsi di mesin saya" pada proyek JavaScript.

JavaScript Beautifier

Format dan indentasikan JavaScript yang diminifikasi atau berantakan di peramban Anda - berguna saat memeriksa bundle output webpack atau file config yang dihasilkan.

Open tool

Key takeaways

  • Gunakan `npx webpack --version` dari root proyek Anda untuk memeriksa versi yang terinstal lokal — jangan pernah mengandalkan output global `webpack --version`.
  • `npm list webpack` menunjukkan versi yang terinstal dan posisinya di pohon dependensi; `npm list webpack --all` mengungkap jika ada beberapa salinan yang berkonflik.
  • Lock file (`package-lock.json`, `yarn.lock`, `pnpm-lock.yaml`) berisi versi ter-resolve yang tepat — lebih otoritatif daripada rentang di `package.json`.
  • Webpack 5 adalah rilis aktif saat ini; webpack 4 hanya pemeliharaan. Penambahan utama webpack 5 mencakup cache persisten, Module Federation, dan modul aset bawaan.
  • Beberapa salinan webpack di `node_modules` menyebabkan kegagalan plugin diam-diam — deteksi dengan `npm list webpack --all` dan perbaiki dengan `overrides` (npm) atau `resolutions` (Yarn).
  • Kunci versi webpack yang tepat di devDependencies dan commit lock file Anda untuk memastikan setiap pengembang dan CI runner menggunakan versi yang sama.
  • Selalu periksa versi webpack terlebih dahulu saat men-debug error build — ketidakcocokan versi antara webpack dan loader atau plugin adalah penyebabnya lebih sering daripada yang disarankan pesan error.

Pertanyaan yang sering diajukan

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