Awesome
grunt-rollup
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
<br><b>chrisprice</b> | <br><b>GMartigny</b> | <br><b>scythianfuego</b> |
---|
<!-- 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) -->All contributions are valued, you can add yourself to this list (or request to be added) whatever your contribution is.