Home

Awesome

grunt-rollup

Build Status Plugin size

Grunt plugin for rollup - next-generation ES6 module bundler

Getting Started

This plugin requires Grunt >=0.4.0 and node >=8.6.0.

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-rollup --save-dev

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

grunt.loadNpmTasks('grunt-rollup');

The "rollup" task

Overview

In your project's Gruntfile, add a section named rollup to the data object passed into grunt.initConfig().

grunt.initConfig({
  rollup: {
    options: {
      // Task-specific options go here.
    },
    your_target: {
      // Target-specific file lists and/or options go here.
    },
  },
});

Options

Supports all the options from rollup's JavaScript API.

Sourcemaps

A value of true for sourceMap will output the map to a file with the same name as the JavaScript with .map appended. A value of inline for sourceMap will inline the sourcemap into the source file.

Usage Examples

grunt.initConfig({
  rollup: {
    options: {},
    files: {
      'dest/bundle.js': 'src/entry.js',
    },
  },
});

Usage with Plugins

var babel = require('@rollup/plugin-babel').default;

grunt.initConfig({
  rollup: {
    options: {
      plugins: [
        babel({
          exclude: './node_modules/**'
        })
      ]
    },
    files: {
      'dest/bundle.js': 'src/entry.js',
    },
  },
});

Plugin getter

Some plugins are stateful and this doesn't play nice with multiple bundles. For example the rollup-plugin-babel plugin keeps a track of used babel helpers, and passing the configured plugin only once will cause the helpers to leak from one bundle to another. To prevent that, pass a function that returns an array of plugins, like this:

var babel = require('rollup-plugin-babel');

grunt.initConfig({
  rollup: {
    options: {
      plugins: function() {
        return [
          babel({
            exclude: './node_modules/**'
          })
        ];
      }
    },
    files: {
      'dest/bundle.js': 'src/entry.js',
      'dest/bundle2.js': 'src/entry2.js',
    },
  },
});

This way the plugin will be refreshed for each bundle.

Contributing

Any contributions is welcomed. Make sure to read the contributing manual for more information.

Contributors

chrisprice<br><b>chrisprice</b>GMartigny<br><b>GMartigny</b>scythianfuego<br><b>scythianfuego</b>

All contributions are valued, you can add yourself to this list (or request to be added) whatever your contribution is.

<!-- Use this pattern to add yourself: [![FULL NAME or USERNAME](https://github.com/USERNAME.png?size=99)<br><b>USERNAME</b>](https://github.com/USERNAME) -->

License

MIT