Skip to content

📦 Zero-configuration bundler for tiny modules.

Notifications You must be signed in to change notification settings

AlexHayton/microbundle

Repository files navigation

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 Terser 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.

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  (default false)
    --target         Specify your target environment  (default node)
    --external       Specify external dependencies, or 'none'
    --globals        Specify globals dependencies, or 'none'
    --compress       Compress output using Terser  (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
    --jsx            A custom JSX pragma like React.createElement (default: h)

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.mjs",      // 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

🥂 License

MIT

About

📦 Zero-configuration bundler for tiny modules.

Resources

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 99.7%
  • Dockerfile 0.3%