Security News
ESLint is Now Language-Agnostic: Linting JSON, Markdown, and Beyond
ESLint has added JSON and Markdown linting support with new officially-supported plugins, expanding its versatility beyond JavaScript.
gulp-rollup
Advanced tools
This plugin allows gulp to populate a virtual filesystem and feed it to the Rollup ES6 module bundler.
Note: This plugin is not appropriate for most use cases, as it requires every file expected to be imported by Rollup to be loaded into memory preemptively. rollup-stream is preferred for almost all purposes. If you want to transform/synthesize/alias/etc. the files Rollup processes, use Rollup plugins; if there's no Rollup plugin to do what you want, try the gulp-to-Rollup plugin adapter, rollup-plugin-gulp. If you really need to synthesize your files in gulp, go ahead and use gulp-rollup—that's what it's made for.
npm install --save-dev gulp-rollup
var gulp = require('gulp'),
rollup = require('gulp-rollup');
gulp.task('bundle', function() {
gulp.src('./src/**/*.js')
// transform the files here.
.pipe(rollup({
// any option supported by Rollup can be set here.
entry: './src/main.js'
}))
.pipe(gulp.dest('./dist'));
});
var gulp = require('gulp'),
rollup = require('gulp-rollup'),
sourcemaps = require('gulp-sourcemaps');
gulp.task('bundle', function() {
gulp.src('./src/**/*.js')
.pipe(sourcemaps.init())
// transform the files here.
.pipe(rollup({
entry: './src/main.js'
}))
.pipe(sourcemaps.write())
.pipe(gulp.dest('./dist'));
});
If an array of strings is passed into options.entry
, a separate bundle will be rolled up from each entry point. They will be processed in parallel and output in no particular order. As usual, each bundle will have the same path as the associated entry file.
In addition, a Promise that resolves to a string or array of strings can be passed into options.entry
. This is to make it more convenient to use asynchronous methods to locate entry files.
options.rollup
In addition to the standard Rollup options, gulp-rollup supports options.rollup
, allowing you to use an older, newer, or custom version of Rollup by passing in the module like so:
gulp.src('./src/**/*.js')
.pipe(rollup({
rollup: require('rollup'),
entry: './src/main.js'
}))
//...
options.allowRealFiles
If options.allowRealFiles
is set to true, gulp-rollup will break the gulp plugin guidelines just for you and allow Rollup to read files directly from the filesystem when a file with a matching name isn't found in the gulp stream. You could use this to weasel your way out of having to use rollup-stream, but that would make you a terrible person.
options.impliedExtensions
By default, gulp-rollup will mimic Rollup by adding a .js extension to imports if necessary. You can customize this behavior by setting options.impliedExtensions
to an array of extensions, like ['.js', '.es', '.jsx']
. If options.impliedExtensions
is set to false
or an empty array, file extensions in imports will be treated as mandatory.
options.separateCaches
If options.separateCaches
is supplied, it should be an object with property names corresponding to entry files. For each of those entry files, options.cache
will be overridden with the corresponding property value. This is most useful in conjunction with the 'bundle'
event:
var gulp = require('gulp'),
rollup = require('gulp-rollup');
var caches = {};
gulp.task('bundle', function() {
gulp.src('./src/**/*.js')
.pipe(rollup({
entry: ['./src/main1.js', './src/main2.js'],
separateCaches: caches
}))
.on('bundle', function(bundle, name) {
caches[name] = bundle;
})
.pipe(gulp.dest('./dist'));
});
options.generateUnifiedCache
If options.generateUnifiedCache
is set to true, gulp-rollup will try to construct a cache representing every file imported by any entry point, to be passed into future Rollup invocations (thus obviating the need for options.separateCaches
) and deliver it via the 'unifiedcache'
event. This should always work as long as all of the plugins you use have deterministic output. Since the internal structure of Rollup's cache objects can't be expected to remain stable, this option isn't guaranteed to work if you specify an options.rollup
.
tl;dr: It works like this:
var gulp = require('gulp'),
rollup = require('gulp-rollup');
var cache;
gulp.task('bundle', function() {
gulp.src('./src/**/*.js')
.pipe(rollup({
entry: ['./src/main1.js', './src/main2.js'],
cache: cache,
generateUnifiedCache: true
}))
.on('unifiedcache', function(unifiedCache) {
cache = unifiedCache;
})
.pipe(gulp.dest('./dist'));
});
FAQs
gulp plugin for Rollup ES6 module bundler
The npm package gulp-rollup receives a total of 2,022 weekly downloads. As such, gulp-rollup popularity was classified as popular.
We found that gulp-rollup demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
ESLint has added JSON and Markdown linting support with new officially-supported plugins, expanding its versatility beyond JavaScript.
Security News
Members Hub is conducting large-scale campaigns to artificially boost Discord server metrics, undermining community trust and platform integrity.
Security News
NIST has failed to meet its self-imposed deadline of clearing the NVD's backlog by the end of the fiscal year. Meanwhile, CVE's awaiting analysis have increased by 33% since June.