138 lines
2.8 KiB
JavaScript
138 lines
2.8 KiB
JavaScript
|
const { rollup, watch } = require('rollup');
|
||
|
const rimraf = require('rimraf');
|
||
|
const { argv } = require('yargs');
|
||
|
|
||
|
// Plugins
|
||
|
const babel = require('rollup-plugin-babel');
|
||
|
const babili = require('rollup-plugin-babel-minify');
|
||
|
const watchEnabled = argv.watch;
|
||
|
|
||
|
// Configs
|
||
|
const babelConfig = require('@popperjs/babel-config');
|
||
|
const sourcemap = true;
|
||
|
const external = ['popper.js'];
|
||
|
const globals = { 'popper.js': 'Popper' };
|
||
|
|
||
|
function bundle({ input, file, name, banner, miniBanner }) {
|
||
|
rimraf.sync('dist');
|
||
|
const minifyOptions = {
|
||
|
comments: false,
|
||
|
banner: miniBanner,
|
||
|
mangle: { topLevel: true },
|
||
|
};
|
||
|
|
||
|
rollup({
|
||
|
input,
|
||
|
plugins: [babel(babelConfig.es6)],
|
||
|
external,
|
||
|
}).then(bundle => {
|
||
|
bundle.write({
|
||
|
format: 'es',
|
||
|
file: `dist/${file}`,
|
||
|
sourcemap,
|
||
|
globals,
|
||
|
banner,
|
||
|
});
|
||
|
});
|
||
|
|
||
|
rollup({
|
||
|
input,
|
||
|
plugins: [babili(minifyOptions), babel(babelConfig.es6)],
|
||
|
external,
|
||
|
}).then(bundle => {
|
||
|
bundle.write({
|
||
|
format: 'es',
|
||
|
file: `dist/${file.replace('.js', '.min.js')}`,
|
||
|
sourcemap,
|
||
|
globals,
|
||
|
});
|
||
|
});
|
||
|
|
||
|
rollup({
|
||
|
input,
|
||
|
plugins: [babel(babelConfig.es5)],
|
||
|
external,
|
||
|
}).then(bundle => {
|
||
|
bundle.write({
|
||
|
format: 'umd',
|
||
|
file: `dist/umd/${file}`,
|
||
|
sourcemap,
|
||
|
globals,
|
||
|
name,
|
||
|
banner,
|
||
|
});
|
||
|
bundle.write({
|
||
|
format: 'es',
|
||
|
file: `dist/esm/${file}`,
|
||
|
sourcemap,
|
||
|
globals,
|
||
|
banner,
|
||
|
});
|
||
|
});
|
||
|
|
||
|
rollup({
|
||
|
input,
|
||
|
plugins: [babili(minifyOptions), babel(babelConfig.es5)],
|
||
|
external,
|
||
|
}).then(bundle => {
|
||
|
bundle.write({
|
||
|
format: 'umd',
|
||
|
file: `dist/umd/${file.replace('.js', '.min.js')}`,
|
||
|
sourcemap,
|
||
|
globals,
|
||
|
name,
|
||
|
});
|
||
|
bundle.write({
|
||
|
format: 'es',
|
||
|
file: `dist/esm/${file.replace('.js', '.min.js')}`,
|
||
|
sourcemap,
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function bundleWatch({ input, file, name, banner, miniBanner }) {
|
||
|
const watcher = watch({
|
||
|
input,
|
||
|
plugins: [babel(babelConfig.es5)],
|
||
|
external,
|
||
|
output: {
|
||
|
format: 'umd',
|
||
|
file: `dist/umd/${file}`,
|
||
|
sourcemap,
|
||
|
globals,
|
||
|
name,
|
||
|
banner,
|
||
|
},
|
||
|
});
|
||
|
|
||
|
console.log('\x1Bc'); // reset console
|
||
|
console.log('Rollup is watching for changes...');
|
||
|
watcher.on('event', event => {
|
||
|
switch (event.code) {
|
||
|
case 'START':
|
||
|
console.info('Rebuilding...');
|
||
|
break;
|
||
|
case 'BUNDLE_START':
|
||
|
console.info('Bundling...');
|
||
|
break;
|
||
|
case 'BUNDLE_END':
|
||
|
console.info('Bundled!');
|
||
|
break;
|
||
|
case 'END':
|
||
|
console.info('Done!');
|
||
|
break;
|
||
|
case 'ERROR':
|
||
|
case 'FATAL':
|
||
|
console.error('Error!');
|
||
|
/* eslint-enable no-console */
|
||
|
}
|
||
|
});
|
||
|
|
||
|
process.on('exit', () => {
|
||
|
watcher.close();
|
||
|
});
|
||
|
}
|
||
|
|
||
|
|
||
|
module.exports = watchEnabled ? bundleWatch : bundle;
|