comparison

Oskar Segersv��rd edited this page Feb 29, 2016 · 18 revisions
Feature webpack/webpack jrburke/requirejs substack/node-browserify jspm/jspm-cli rollup/rollup
CommonJs require yes only wrapping in define yes yes commonjs-plugin
CommonJs require.resolve yes no no no no
CommonJs exports yes only wrapping in define yes yes commonjs-plugin
AMD define yes yes deamdify yes no
AMD require yes yes no yes no
AMD require loads on demand yes with manual configuration no yes no
ES2015 import/export no no no yes  yes
Generate a single bundle yes yes♦ yes yes yes
Load each file separate no yes no yes no
Multiple bundles yes with manual configuration with manual configuration yes no
Additional chunks are loaded on demand yes yes no System.import no
Multi pages build with common bundle with manual configuration yes with manual configuration with bundle arithmetic no
Concat in require require("./fi" + "le") yes no♦ no no no
Indirect require var r = require; r("./file") yes no♦ no no no
Expressions in require (guided) require("./templates/" + template) yes (all files matching included) no♦ no no no
Expressions in require (free) require(moduleName) with manual configuration no♦ no no no
Requirable files file system web file system through plugins file system or through plugins
Plugins yes yes yes yes yes
Preprocessing loaders, transforms loaders transforms plugin translate plugin transforms
Watch mode yes not required yes not needed in dev no
Debugging support SourceUrl, SourceMaps not required SourceMaps SourceUrl, SourceMaps SourceUrl, SourceMaps
Node.js built-in libs require("path") yes no yes yes node-resolve-plugin
Other Node.js stuff process, __dir/filename, global - process, __dir/filename, global process, __dir/filename, global for cjs global (commonjs-plugin)
Replacement for browser web_modules, .web.js, package.json field, alias config option alias option package.json field, alias option package.json, alias option no
Minimizing uglify uglify, closure compiler uglifyify yes uglify-plugin
Mangle path names yes no partial yes not required (path names are not included in the bundle)
Runtime overhead 243B + 20B per module + 4B per dependency 14.7kB + 0B per module + (3B + X) per dependency 415B + 25B per module + (6B + 2X) per dependency 5.5kB for self-executing bundles, 38kB for full loader and polyfill, 0 plain modules, 293B CJS, 139B ES6 System.register before gzip none for ES2015 modules (other formats may have)
Dependencies 19MB / 127 packages 11MB / 118 packages 1.2MB / 1 package 26MB / 131 packages ?MB / 3 packages

♦ in production mode (opposite in development mode)

X is the length of the path string