JavaScript happiness bundler
Last updated 2 years ago by toxichl .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install roly 
SYNC missed versions from official npm registry.

NPM version NPM downloads donate


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

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:

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

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

dist/[name].js          # umd format
dist/[name].min.js      # umd format and compressed
dist/[name]  # 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.


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

Dive into the documentation if you are ready to bundle!


Why not use Rollup's targets option?

As per Rollup Command Line Interface:

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/', 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:

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:

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



Current Tags

  • 1.1.1                                ...           latest (2 years ago)

4 Versions

  • 1.1.1                                ...           2 years ago
  • 1.1.0                                ...           2 years ago
  • 1.0.2                                ...           2 years ago
  • 1.0.1                                ...           2 years ago
Maintainers (1)
Today 0
This Week 0
This Month 4
Last Day 0
Last Week 0
Last Month 1
Dev Dependencies (10)
Dependents (0)

Copyright 2014 - 2016 © |