JSPM

  • Created
  • Published
  • Downloads 85480
  • Score
    100M100P100Q168236F
  • License MIT

Karma preprocessor to bundle ES modules using Rollup

Package Exports

  • karma-rollup-preprocessor
  • karma-rollup-preprocessor/lib/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (karma-rollup-preprocessor) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

karma-rollup-preprocessor

Karma preprocessor to bundle ES modules using Rollup.

Build Status Downloads Version MIT License


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: {
            /**
             * This is just a normal Rollup config object,
             * except that `input` is handled for you.
             */
            plugins: [require('rollup-plugin-buble')()],
            output: {
                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')()],
            output: {
                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')()],
                },
            },
        },
    })
}

Happy bundling! heart