# Microbundle
The **zero-configuration** bundler for _tiny modules_, powered by [Rollup].
## ✨ Features:
- Bundles your library using nothing but a `package.json`
- Support for ESnext & async/await _(via [Bublé] & [Nodent])_
- 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`:
```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
```
microbundle [entries..]
Build once and exit
Commands:
cli.js build [entries..] Build once and exit [default]
cli.js watch [entries..] Rebuilds on any change
Options:
--version Show version number [boolean]
--entry, -i Entry module(s)
[string] [default: ]
--output, -o Directory to place build files into
[string] [default: ]
--cwd Use an alternative working directory
[string] [default: .]
--format Only build specified formats
[string] [default: es,cjs,umd]
--target Specify your target environment
[string] [default: node]
--compress Compress output using UglifyJS
[boolean] [default: true]
--strict Enforce undefined global context and add "use
strict" [default: false]
--name Specify name exposed in UMD builds [string]
```
## 🛣 Roadmap
Here's what's coming up for Microbundle:
- [TypeScript support](https://github.com/developit/microbundle/issues/5)
- [Flowtype support](https://github.com/developit/microbundle/issues/5#issuecomment-351075881)
## 🥂 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