https://github.com/developit/rollup-plugin-postprocess
🎞 Find & replace postprocessing for Rollup output
https://github.com/developit/rollup-plugin-postprocess
Last synced: 6 months ago
JSON representation
🎞 Find & replace postprocessing for Rollup output
- Host: GitHub
- URL: https://github.com/developit/rollup-plugin-postprocess
- Owner: developit
- Created: 2018-01-14T16:14:16.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2020-08-15T08:20:12.000Z (over 5 years ago)
- Last Synced: 2025-06-28T17:53:24.862Z (6 months ago)
- Language: JavaScript
- Homepage: https://npm.im/rollup-plugin-postprocess
- Size: 38.1 KB
- Stars: 18
- Watchers: 2
- Forks: 5
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# rollup-plugin-postprocess [](https://www.npmjs.org/package/rollup-plugin-postprocess) [](https://travis-ci.org/developit/rollup-plugin-postprocess)
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](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/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
```js
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.
```js
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](https://oss.ninja/mit/developit)