Chart.js/rollup.config.js
Simon Brunel 2a97ec21c5
Migrate from Browserify to rollup (#5904)
Browserify isn't optimal bundling Chart.js because it adds too many internal wrappers, doesn't handle external/global dependencies and doesn't provide a way to generate ESM builds. Therefore, it seems the right choice to switch to rollup, so move all the build process in `rollup.config.js` and make Gulp to execute `rollup -c`.

We also had to switch to Terser instead of UglifyJS because this last one contains a breaking bug. Note that tests now use the exact same rollup config as our builds (the minified one) to ensure that the bundling and minification steps don't break anything. Finally, replace the `gulp watch` task by `gulp build --watch` to be consistent with the other `unittest` and `docs` watching syntax.
2018-12-14 20:20:43 +01:00

101 lines
1.5 KiB
JavaScript

/* eslint-env es6 */
const commonjs = require('rollup-plugin-commonjs');
const resolve = require('rollup-plugin-node-resolve');
const terser = require('rollup-plugin-terser').terser;
const pkg = require('./package.json');
const input = 'src/chart.js';
const banner = `/*!
* Chart.js v${pkg.version}
* ${pkg.homepage}
* (c) ${new Date().getFullYear()} Chart.js Contributors
* Released under the MIT License
*/`;
module.exports = [
// UMD builds (excluding moment)
// dist/Chart.min.js
// dist/Chart.js
{
input: input,
plugins: [
resolve(),
commonjs()
],
output: {
name: 'Chart',
file: 'dist/Chart.js',
banner: banner,
format: 'umd',
indent: false,
globals: {
moment: 'moment'
}
},
external: [
'moment'
]
},
{
input: input,
plugins: [
resolve(),
commonjs(),
terser({
output: {
preamble: banner
}
})
],
output: {
name: 'Chart',
file: 'dist/Chart.min.js',
format: 'umd',
indent: false,
globals: {
moment: 'moment'
}
},
external: [
'moment'
]
},
// UMD builds (including moment)
// dist/Chart.bundle.min.js
// dist/Chart.bundle.js
{
input: input,
plugins: [
resolve(),
commonjs()
],
output: {
name: 'Chart',
file: 'dist/Chart.bundle.js',
banner: banner,
format: 'umd',
indent: false
}
},
{
input: input,
plugins: [
resolve(),
commonjs(),
terser({
output: {
preamble: banner
}
})
],
output: {
name: 'Chart',
file: 'dist/Chart.bundle.min.js',
format: 'umd',
indent: false
}
}
];