The zero-configuration bundler for tiny modules, powered by Rollup.
- One dependency to bundle your library using only a
package.json
- Support for ESnext & async/await (via Bublé & Nodent)
- Produces tiny, optimized code for all inputs
- Supports multiple entry modules (
cli.js
+index.js
, etc) - Creates multiple output formats for each entry (CJS, UMD & ESM)
- Built-in Uglify compression & gzipped bundle size tracking
npm i -D microbundle
... then add the scripts to your package.json
:
{
"scripts": {
"build": "microbundle",
"dev": "microbundle watch"
}
}
Microbundle includes two commands - build
(the default) and watch
. Neither require any options, but you can tailor things to suit your needs a bit if you like.
By default, microbundle will infer the location of your source entry file
(the root module in your program) from the source
field in your package.json
. It will infer the output directory and filename(s) from the main
field. For UMD builds, microbundle will use a snake case version of the name
field in your package.json
for the export name; you can also specify a name via an amdName
field or the name
CLI option.
Just like microbundle build
, but watches your source files and rebuilds on any change.
Usage
$ microbundle <command> [options]
Available Commands
build Build once and exit
watch Rebuilds on any change
For more info, run any command with the `--help` flag
$ microbundle build --help
$ microbundle watch --help
Options
-v, --version Displays current version
-i, --entry Entry module(s)
-o, --output Directory to place build files into
-f, --format Only build specified formats (default es,cjs,umd)
--target Specify your target environment (default node)
--external Specify external dependencies, or 'all'
--compress Compress output using UglifyJS (default true)
--strict Enforce undefined global context and add "use strict"
--name Specify name exposed in UMD builds
--cwd Use an alternative working directory (default .)
--sourcemap Generate source map (default true)
-h, --help Displays this message
You can specify output builds in a package.json
as follows:
"main": "dist/foo.js", // CJS bundle
"umd:main": "dist/foo.umd.js", // UMD bundle
"module": "dist/foo.m.js", // ES Modules bundle
"source": "src/foo.js", // custom entry module (same as 1st arg to microbundle)
Here's what's coming up for Microbundle: