X-Team Rollup v Webpack v Parcel comparison!
We'll build a simple React app that's got simple implementations of all the basics:
1. React Router v4
2. React Redux
3. React 16.2.x
The exact package.json
dependencies for our build tools:
Shared babel
dependencies:
"babel-loader": "=7.1.4",
"babel-plugin-external-helpers": "=6.22.0",
"babel-preset-env": "=1.6.1",
"babel-preset-react": "=6.24.1",
"babel-preset-stage-0": "=6.24.1"
parcel
dependencies:
"parcel-bundler": "=1.7.1"
rollup
dependencies:
"rollup": "=0.58.2",
"rollup-plugin-babel": "=3.0.4",
"rollup-plugin-uglify": "=3.0.0"
webpack
dependencies:
"webpack": "=4.6.0",
"webpack-cli": "=2.0.15"
Each build tool's configuration is seperated into independent directories!
We'll be comparing build time for development
and production
and additional features:
$ npm run build-parcel
$ npm run build-webpack
$ npm run build-rollup
All three testing libraries were tested and built on the following Dell 15 XPS 2016 with specs:
Intel Core i7-6700HQ Quad-Core (8 Logical Cores) at 2.60 GHz
32 GB RAM
Windows 10 Pro + Linux Subsystem and Cygwin
NVIDIA 960M GPU
256GB m2 PCIe SSD
15.6" FHD Screen
Results divided into production
and development
modes:
Tool | Dev Build Time One | Dev Build Time Two | Dev Build Time Three | Dev Build Time Avg |
---|---|---|---|---|
Parcel | 14.92 s | 5.22 s | 4.36 s | 8.16 avg s |
Rollup | 0.570 s | 0.482 s | 0.487 s | 0.513 avg s |
Webpack | 3.608 s | 3.328 s | 3.844 s | 3.59 avg s |
Production
mode:
Tool | Prod Build Time One | Prod Build Time Two | Prod Build Time Three | Prod Build Time Avg |
---|---|---|---|---|
Parcel | 738.509 s | 35.364 s | 35.592 s | 269.82 avg s |
Rollup | 0.712 s | 0.665 s | 0.714 s | 0.697 avg s |
Webpack | 3.636 s | 3.805 s | 4.305 s | 3.915 avg s |
Above, we compare raw build time alone but there are several other highly relevant considerations:
Parcel
's caching feature sees dramatically decreases in time consumption after the initial run. For frequent, small changes, in smaller projectsParcel
is a great choice.Rollup
provides much simpler configuration overwebpack 4
and has a host of pre-configured plugins that are a breeze to incorporate into your project.Rollup
's also the fastest of the build tools period.Rollup
also provides convient source maps which can aid in debugging.webpack 4
has gotten a lot easier to use and particularly through the convenientmode
attribute (which will enforce minification when set to 'production' automatically now).
Overall, Parcel
's a fantastic choice for small projects since it's requires zero configuration.
Rollup
represents the next generation of build tools and is lightning fast with easy configuration.
webpack 4
represents a great improvement in the tradition of a tried and true universal build-tool workhorse. It's also largely interchangeable with webpack 3
configuration which simplifies migration.