An open API service indexing awesome lists of open source software.

https://github.com/ulivz/roly

❤️ JavasScript happiness bundler
https://github.com/ulivz/roly

Last synced: 7 months ago
JSON representation

❤️ JavasScript happiness bundler

Awesome Lists containing this project

README

          




NPM version
NPM downloads


donate

## Introduction

Running command `roly` it will compile `src/index.js` to:

```bash
dist/[name].common.js # commonjs format
```

The `[name]` is `name` in `package.json` or `index` as fallback.

You can also generate UMD bundle and compress it with: `roly --format umd --compress umd`, then you get:

```bash
dist/[name].js # umd format
dist/[name].min.js # compressed umd format
dist/[name].min.js.map # compressed file will automatically get sourcemaps
```

Not enough? You can have them all in one command `roly --format cjs,es,umd --compress umd`:

```bash
dist/[name].js # umd format
dist/[name].min.js # umd format and compressed
dist/[name].min.js.map # sourcemap for umd format
dist/[name].common.js # commonjs format
dist/[name].es.js # es-modules format
```

**Note:** _In `UMD` format all third-party libraries will be bundled in dist files, while in other formats they are excluded._

## Install

```bash
npm install -g roly
# prefer local install
npm install roly --save-dev
```

[Dive into the documentation](http://www.v2js.com/roly/) if you are ready to bundle!

## FAQ

### Why not use Rollup's `targets` option?

As per Rollup [Command Line Interface](https://rollupjs.org/#command-line-reference):

```js
import buble from 'rollup-plugin-buble'

export default {
input: 'src/main.js',
plugins: [ buble() ],
output: [
{ file: 'dist/bundle.cjs.js', format: 'cjs' },
{ file: 'dist/bundle.umd.js', format: 'umd' },
{ file: 'dist/bundle.es.js', format: 'es' },
]
}
```

You can use an array as `targets` to generate bundles in multiple formats, which is really neat and helpful.

However, you can't apply different plugins to different target, which means you still need more config files. For example, add `rollup-plugin-node-resolve` and `rollup-plugin-commonjs` in `umd` build, and what about minification? It's yet another config file.

While in roly, it's as simple as running:

```bash
roly src/main.js --format cjs --format umd --format es --compress umd
```

Everything can be done via CLI options, if it's too long to read, you can keep them in `roly` field in `package.json`:

```js
{
"roly": {
"entry": "src/main.js",
"format": ["cjs", "umd", "es"],
"compress": "umd"
}
}
```

## License

MIT © [ULIVZ](https://github.com/ulivz)