🍣 Stream Rollup build results
This package exists to provide a streaming interface for Rollup builds. This is useful in situations where a build system is working with vinyl files, such as gulp.js.
This plugin requires an LTS Node version (v8.0.0+) and Rollup v1.20.0+.
Using npm:
npm install @rollup/stream --save-devAssume a src/index.js file exists and contains code like the following:
export default 'jingle bells, batman smells';We can bundle src/index.js using streams such like:
import rollupStream from '@rollup/stream';
const { log } = console;
const options = {
input: 'src/index.js',
output: { format: 'cjs' }
};
const stream = rollupStream(options);
let bundle = '';
stream.on('data', (data) => bundle += data);
stream.on('end', () => log(bundle));The preceding code will concatenate each chunk (or asset) and output the entire bundle's content when Rollup has completed bundling and the stream has ended.
Using Gulp requires piping Suppose one wanted to take the bundle content and run it through a minifier, such as terser:
import rollupStream from '@rollup/stream';
import gulp from 'gulp';
import terser from 'gulp-terser';
import source from 'vinyl-source-stream';
gulp.task('rollup', () => {
const options = { input: 'src/index.js' };
return rollupStream(options)
.pipe(source('bundle.js'))
.pipe(terser({ keep_fnames: true, mangle: false }))
.pipe(gulp.dest('dist'));
});Rollup can produce source maps by specifying the sourcemap output option. To use the generated sourcemaps with Gulp:
import rollupStream from '@rollup/stream';
import buffer from 'vinyl-buffer';
import gulp from 'gulp';
import sourcemaps from 'gulp-sourcemaps';
import terser from 'gulp-terser';
import source from 'vinyl-source-stream';
gulp.task('rollup', () => {
const options = { input: 'src/index.js', output: { sourcemap: true } };
return rollupStream(options)
.pipe(source('bundle.js'))
.pipe(buffer())
.pipe(sourcemaps.init({loadMaps: true}))
.pipe(sourcemaps.write('dist'))
.pipe(gulp.dest('dist'));
});(Example reproduced from https://github.com/Permutatrix/rollup-stream#readme)
All Rollup options are valid to pass as options to @rollup/stream.