Skip to content

Instantly share code, notes, and snippets.

@craigdmckenna
Last active June 28, 2020 21:09
Show Gist options
  • Save craigdmckenna/c420f58bf4fdb35ac8923365555f1fb0 to your computer and use it in GitHub Desktop.
Save craigdmckenna/c420f58bf4fdb35ac8923365555f1fb0 to your computer and use it in GitHub Desktop.
Create Multiple JavaScript Bundles with rollup and gulp
const gulp = require('gulp')
const gutil = require('gulp-util')
const rollup = require('./rollup')
const jsModules = [
{
entry: 'src/js/main.js',
dest: 'dist/js/main.min.js'
},
{
entry: 'src/js/index.js',
dest: 'dist/js/index.min.js'
},
{
entry: 'src/js/some_other.js',
dest: 'dist/js/some_other.min.js'
}
]
gulp.task('rollup', function(callback) {
rollup(jsModules, gutil, callback)
})
const rollup = require('rollup').rollup
const babel = require('rollup-plugin-babel')
const eslint = require('rollup-plugin-eslint')
const resolve = require('rollup-plugin-node-resolve')
const commonjs = require('rollup-plugin-commonjs')
const replace = require('rollup-plugin-replace')
const uglify = require('rollup-plugin-uglify')
module.exports = (modules, logger, callback) => {
modules.forEach((module, i) => {
rollup({
entry: module.entry,
plugins: [
resolve({
jsnext: true,
main: true,
browser: true
}),
commonjs(),
eslint(),
babel({
exclude: 'node_modules/**'
}),
replace({
ENV: JSON.stringify(process.env.NODE_ENV || 'development')
}),
(process.env.NODE_ENV === 'production' && uglify())
]
})
.then( bundle => {
bundle.write({
dest: module.dest,
sourceMap: 'inline'
})
if (i === modules.length - 1) {
callback()
}
})
.catch(err => logger.log(err))
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment