@stadtlandnetz/rollup-plugin-postprocess

Find-and-replace postprocessing for Rollup output.

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
@stadtlandnetz/rollup-plugin-postprocess
1861.1.02 years ago2 years agoMinified + gzip package size for @stadtlandnetz/rollup-plugin-postprocess in KB

Readme

rollup-plugin-postprocess npm travis
Apply regex find-and-replace postprocessing to your Rollup bundle.

Installation

npm i -D rollup-plugin-postprocess

Usage

Works just like a JavaScript String replace, including the funtion callback option.
postprocess() expects an Array of [(RexExp) find, (String|Function) replace] pairs. Alternatively, if a function is provided, it will be invoked for each bundle and can return said pairs.

Example

import postprocess from 'rollup-plugin-postprocess';

export default {
    plugins: [
        postprocess([
            [/\b(module\.exports=|export default )([a-zA-Z])/, '$1$2']
        ])
    ]
}

Complex Example

This example is more practical. Rollup places exports at the end of your bundle, which can often create single-use variables that Uglify does not collapse. Let's implement a find & replace that "moves" the export inline to save some bytes.
In this example, we'll make use of the fact that find/replacement pairs are executed in sequence. The first pair is used both to remove the existing export statement and to find the export type & identifier. By the time the second find/replace pair is processed, it can make use of the values found in the first pass.
import postprocess from 'rollup-plugin-postprocess';

let name, exportPrefix;
export default {
    plugins: [
        postprocess([
            [
                /(module\.exports\s*=\s*|export\s*default\s*)([a-zA-Z$_][a-zA-Z0-9$_]*)[;,]?/,
                (str, prefix, id) => {
                    name = id;
                    exportPrefix = prefix;
                    // returning nothing is the same as an empty string
                }
            ],
            [
                /^function\s([a-zA-Z$_][a-zA-Z0-9$_]*)/,
                (str, id) => id==name ? `${exportPrefix} function` : str
            ]
        ])
    ]
};

License

MIT