Philosophy
The core approach behind each JavaScript bundler.
Webpack
The original general-purpose module bundler, prioritizing flexibility and an enormous, mature plugin/loader ecosystem able to handle almost any asset or workflow, at the cost of configuration complexity.
Rollup
Prioritizes producing small, clean output through aggressive ES module tree-shaking, originally aimed at bundling libraries rather than applications, where minimal output size matters most.
Parcel
Prioritizes true zero-configuration bundling — point it at an HTML file and it figures out the rest, aiming to remove config files from the bundler experience entirely.
esbuild
Prioritizes raw speed above almost everything else, achieved by being written in Go and designed from the ground up for parallelism, at the cost of some of the deep plugin flexibility older bundlers offer.
Vite
Prioritizes developer experience during development by not bundling at all in dev mode — serving native ES modules directly over HTTP — while still producing an optimized bundled build for production.
Turbopack
Built by Vercel specifically for Next.js, prioritizing incremental, function-level caching so that only what actually changed gets rebuilt, aiming to make large application rebuilds close to instant.
Rspack
Prioritizes drop-in compatibility with webpack’s configuration and plugin API while replacing its slow JavaScript core with a much faster Rust implementation, easing migration for existing webpack projects.
Bun
Bundling is one part of a broader all-in-one JavaScript runtime and toolchain, prioritizing simplicity and speed as a built-in feature rather than a separate tool to configure.
Rolldown
A ground-up Rust rewrite of Rollup, prioritizing Rollup-compatible plugin APIs and output behavior while closing the performance gap with Go/Rust-based tools, designed to become Vite’s production bundler.