Last active
June 28, 2020 21:09
-
-
Save craigdmckenna/c420f58bf4fdb35ac8923365555f1fb0 to your computer and use it in GitHub Desktop.
Create Multiple JavaScript Bundles with rollup and gulp
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) | |
}) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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