Skip to content

Latest commit

 

History

History
127 lines (94 loc) · 4.76 KB

File metadata and controls

127 lines (94 loc) · 4.76 KB

microbundle

Microbundle npm travis

The zero-configuration bundler for tiny modules, powered by Rollup.


✨ Features:

  • 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

🔧 Installation

npm i -D microbundle

... then add the scripts to your package.json:

{
  "scripts": {
    "build": "microbundle",
    "dev": "microbundle watch"
  }
}

📦 Usage

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.

microbundle / microbundle build

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.

If you'd like to compress your library for distribution, include the --compress flag. You may also produce and include source maps by including the --sourcemap flag:

$ microbundle --compress --sourcemap
# or
$ microbundle build --compress --sourcemap

Note: These flags can also be applied to watch mode!

microbundle watch

Just like microbundle build, but watches your source files and rebuilds on any change.

All CLI Options

  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)
    -w, --watch      Rebuilds on any change
    --target         Specify your target environment  (default node)
    --external       Specify external dependencies, or 'none'
    --compress       Compress output using UglifyJS
    --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
    -h, --help       Displays this message

  Examples
    $ microbundle
    $ microbundle --compress
    $ microbundle --external none --format cjs --strict
    $ microbundle build --compress --sourcemap
    $ microbundle watch --sourcemap

Specifying builds in package.json

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)

🛣 Roadmap

Here's what's coming up for Microbundle:

🔨 Built with Microbundle

  • Stockroom Offload your store management to a worker easily.
  • Microenvi Bundle, serve, and hot reload with one command.
  • react-recomponent Reason-style reducer components for React using ES6 classes.

🥂 License

MIT