npm package: @mattdesl/microbundle
Description: Zero-configuration bundler for tiny JS libs, powered by Rollup.
Author: Jason Miller
Latest version: 0.4.5

<p align="center">
  <img src="https://i.imgur.com/LMEgZMh.gif" width="597" alt="microbundle">
</p>
<h1 align="center">
	@mattdesl/microbundle
	<a href="https://www.npmjs.org/package/microbundle"><img src="https://img.shields.io/npm/v/microbundle.svg?style=flat" alt="npm"></a> <a href="https://travis-ci.org/developit/microbundle"><img src="https://travis-ci.org/developit/microbundle.svg?branch=master" alt="travis"></a>
</h1>
<p align="center">The <strong>zero-configuration</strong> bundler for <em>tiny modules</em>, powered by <a href="https://github.com/rollup/rollup">Rollup</a>.</p>

---

## ✨ 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 _(<abbr title="CommonJS (node)">CJS</abbr>, <abbr title="Universal Module Definition">UMD</abbr> & <abbr title="ECMAScript Modules">ESM</abbr>)_
- Built-in Uglify compression & gzipped bundle size tracking

## 🔧 Installation

`npm i -D microbundle`

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

```js
{
  "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'
    --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, also accepts 'inline')
    -h, --help       Displays this message
```

### 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:

- [ ] [Multiple separate inputs->outputs](https://github.com/developit/microbundle/issues/50)
- [x] [TypeScript support](https://github.com/developit/microbundle/issues/5)
- [x] [Flowtype support](https://github.com/developit/microbundle/issues/5#issuecomment-351075881)

## 🔨 Built with Microbundle

- [Stockroom](https://github.com/developit/stockroom) Offload your store management to a worker easily.
- [Microenvi](https://github.com/fwilkerson/microenvi) Bundle, serve, and hot reload with one command.

## 🥂 License

[MIT](https://oss.ninja/mit/developit/)

[rollup]: https://github.com/rollup/rollup
[bublé]: https://github.com/Rich-Harris/buble
[nodent]: https://github.com/MatAtBread/nodent-compiler