node package manager
Stop writing boring code. Discover, share, and reuse within your team. Create a free org »

karma-rollup-preprocessor

Karma preprocessor to bundle ES2015 modules using Rollup.

Build Status Dependency Status Downloads Version License


Features

  • Rebundles your files when watched dependencies change
  • Caches bundle output for improved performance
  • Maintained with heart by @jlmakes

Installation

npm install karma-rollup-preprocessor

Configuration

All the options detailed in the Rollup Documentation can be passed to rollupPreprocessor.

Standard

Below is a well-founded recommendation using the Bublé ES2015 transpiler:

// karma.conf.js
module.exports = function (config) {
    config.set({
 
        files: [
            // Make sure to disable Karma’s file watcher
            // because the preprocessor will use its own.
            { pattern: 'test/**/*.spec.js', watched: false }
        ],
 
        preprocessors: {
            'test/**/*.spec.js': ['rollup']
        },
 
        rollupPreprocessor: {
            plugins: [
                require('rollup-plugin-buble')()
            ],
            format: 'iife',         // Helps prevent naming collisions.
            name: '<your_project>', // Required for 'iife' format.
            sourcemap: 'inline'     // Sensible for testing.
        }
    })
}

Configured Preprocessors

Below shows an example where configured preprocessors can be very helpful:

// karma.conf.js
module.exports = function (config) {
    config.set({
 
        files: [
            { pattern: 'test/**/*.spec.js', watched: false }
        ],
 
        preprocessors: {
            'test/buble/**/*.spec.js': ['rollup'],
            'test/babel/**/*.spec.js': ['rollupBabel']
        },
 
        rollupPreprocessor: {
            plugins: [
                require('rollup-plugin-buble')()
            ],
            format: 'iife',
            name: '<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')()
                    ]
                }
            }
        }
    })
}

Support

Supports all Rollup plug-ins, and works on Node 4 and up. Happy bundling!