Configuration
How much configuration each JavaScript bundler typically requires.
Webpack
Notoriously configuration-heavy — a webpack.config.js file with loaders, plugins, and rules is expected for anything beyond the simplest project, often cited as its biggest developer-experience drawback.
Rollup
Requires a rollup.config.js specifying entry points, output format, and plugins; simpler than webpack’s config surface but still requires explicit setup for most real projects.
Parcel
Aims for effectively zero configuration — pointing it at an entry file is often enough, with sensible defaults inferred automatically for common project types.
esbuild
Configurable through a small JS/CLI API or config object, deliberately smaller in scope than webpack’s configuration surface, reflecting its narrower feature set.
Vite
Uses a comparatively small vite.config.js, with framework-specific plugins (React, Vue, Svelte, and others) providing sensible defaults so most projects need only minimal customization.
Turbopack
Configured through Next.js’s own configuration file rather than a separate bundler config, inheriting most defaults automatically since it’s built specifically for the Next.js framework.
Rspack
Uses a webpack-compatible configuration format, so existing webpack.config.js files often work with little to no modification, easing migration for teams with established webpack setups.
Bun
Configuration lives in bun.build() calls or bunfig.toml, generally simpler and smaller than webpack’s configuration surface, in line with Bun’s overall minimal-config philosophy.
Rolldown
Uses a configuration format closely mirroring Rollup’s own, since compatibility with existing Rollup configs and plugins is one of its core design goals.