Karma preprocessor to bundle ES2015 modules using Rollup.
- Rebundles your files when watched dependencies change
- Caches bundle output for improved performance
- Maintained with
by @jlmakes
npm install karma-rollup-preprocessor --save-dev
All the options detailed in the Rollup Documentation can be passed to rollupPreprocessor
.
Below is a well-founded recommendation using the Bublé ES2015 transpiler:
// karma.conf.js
module.exports = function (config) {
config.set({
files: [
// Watch src files for changes but
// don't load them into the browser.
{ pattern: 'src/**/*.js', included: false },
'test/**/*.spec.js',
],
preprocessors: {
'src/**/*.js': ['rollup'],
'test/**/*.spec.js': ['rollup'],
},
rollupPreprocessor: {
plugins: [
require('rollup-plugin-buble')(),
],
format: 'iife', // Helps prevent naming collisions.
moduleName: '<your_project>', // Required for 'iife' format.
sourceMap: 'inline', // Sensible for testing.
},
});
};
Below shows an example where configured preprocessors can be very helpful:
// karma.conf.js
module.exports = function (config) {
config.set({
files: [
// Watch src files for changes but
// don't load them into the browser.
{ pattern: 'src/**/*.js', included: false },
'test/**/*.spec.js',
],
preprocessors: {
'test/buble/**/*.spec.js': ['rollup'],
'test/babel/**/*.spec.js': ['rollupBabel'],
},
rollupPreprocessor: {
plugins: [
require('rollup-plugin-buble')(),
],
format: 'iife',
moduleName: '<your_project>',
sourceMap: 'inline',
},
customPreprocessors: {
// Clones the base preprocessor, but overwrites
// its options with those defined below.
rollupBabel: {
base: 'rollup',
options: {
// In this case, to use
// a different transpiler:
plugins: [
require('rollup-plugin-babel')(),
],
}
}
}
});
};
Supports all Rollup plug-ins, and works on Node 4
and up. Happy bundling!