143 lines
3.4 KiB
JavaScript
143 lines
3.4 KiB
JavaScript
|
// Dependencies
|
||
|
// =============================================================================
|
||
|
const path = require('path');
|
||
|
|
||
|
import { babel } from '@rollup/plugin-babel';
|
||
|
import commonjs from '@rollup/plugin-commonjs';
|
||
|
import { eslint } from 'rollup-plugin-eslint';
|
||
|
import json from '@rollup/plugin-json';
|
||
|
import merge from 'lodash.merge';
|
||
|
import pkg from './package.json';
|
||
|
import resolve from '@rollup/plugin-node-resolve';
|
||
|
import { terser } from 'rollup-plugin-terser';
|
||
|
|
||
|
|
||
|
// Settings
|
||
|
// =============================================================================
|
||
|
// Copyright
|
||
|
const currentYear = (new Date()).getFullYear();
|
||
|
const releaseYear = 2018;
|
||
|
|
||
|
// Output
|
||
|
const entryFile = path.resolve(__dirname, 'src', 'index.js');
|
||
|
const outputFile = path.resolve(__dirname, 'dist', `${pkg.name}.js`);
|
||
|
const outputName = 'getCssData';
|
||
|
|
||
|
// Banner
|
||
|
const bannerData = [
|
||
|
`${pkg.name}`,
|
||
|
`v${pkg.version}`,
|
||
|
`${pkg.homepage}`,
|
||
|
`(c) ${releaseYear}${currentYear === releaseYear ? '' : '-' + currentYear} ${pkg.author}`,
|
||
|
`${pkg.license} license`
|
||
|
];
|
||
|
|
||
|
// Plugins
|
||
|
const pluginSettings = {
|
||
|
eslint: {
|
||
|
exclude : ['node_modules/**', './package.json'],
|
||
|
throwOnWarning: false,
|
||
|
throwOnError : true
|
||
|
},
|
||
|
babel: {
|
||
|
// See .babelrc
|
||
|
babelHelpers: 'bundled'
|
||
|
},
|
||
|
terser: {
|
||
|
beautify: {
|
||
|
compress: false,
|
||
|
mangle : false,
|
||
|
output: {
|
||
|
beautify: true,
|
||
|
comments: /(?:^!|@(?:license|preserve))/
|
||
|
}
|
||
|
},
|
||
|
minify: {
|
||
|
compress: true,
|
||
|
mangle : true,
|
||
|
output : {
|
||
|
comments: new RegExp(pkg.name)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
// Config
|
||
|
// =============================================================================
|
||
|
// Base
|
||
|
const config = {
|
||
|
input : entryFile,
|
||
|
output: {
|
||
|
file : outputFile,
|
||
|
name : outputName,
|
||
|
banner : `/*!\n * ${ bannerData.join('\n * ') }\n */`,
|
||
|
sourcemap: true
|
||
|
},
|
||
|
plugins: [
|
||
|
resolve(),
|
||
|
commonjs(),
|
||
|
json(),
|
||
|
eslint(pluginSettings.eslint),
|
||
|
babel(pluginSettings.babel)
|
||
|
],
|
||
|
watch: {
|
||
|
clearScreen: false
|
||
|
}
|
||
|
};
|
||
|
|
||
|
// Formats
|
||
|
// -----------------------------------------------------------------------------
|
||
|
// ES Module
|
||
|
const esm = merge({}, config, {
|
||
|
output: {
|
||
|
file : config.output.file.replace(/\.js$/, '.esm.js'),
|
||
|
format: 'esm'
|
||
|
},
|
||
|
plugins: config.plugins.concat([
|
||
|
terser(pluginSettings.terser.beautify)
|
||
|
])
|
||
|
});
|
||
|
|
||
|
// ES Module (Minified)
|
||
|
const esmMinified = merge({}, config, {
|
||
|
output: {
|
||
|
file : esm.output.file.replace(/\.js$/, '.min.js'),
|
||
|
format: esm.output.format
|
||
|
},
|
||
|
plugins: config.plugins.concat([
|
||
|
terser(pluginSettings.terser.minify)
|
||
|
])
|
||
|
});
|
||
|
|
||
|
// UMD
|
||
|
const umd = merge({}, config, {
|
||
|
output: {
|
||
|
format: 'umd'
|
||
|
},
|
||
|
plugins: config.plugins.concat([
|
||
|
terser(pluginSettings.terser.beautify)
|
||
|
])
|
||
|
});
|
||
|
|
||
|
// UMD (Minified)
|
||
|
const umdMinified = merge({}, config, {
|
||
|
output: {
|
||
|
file : umd.output.file.replace(/\.js$/, '.min.js'),
|
||
|
format: umd.output.format
|
||
|
},
|
||
|
plugins: config.plugins.concat([
|
||
|
terser(pluginSettings.terser.minify)
|
||
|
])
|
||
|
});
|
||
|
|
||
|
|
||
|
// Exports
|
||
|
// =============================================================================
|
||
|
export default [
|
||
|
esm,
|
||
|
esmMinified,
|
||
|
umd,
|
||
|
umdMinified
|
||
|
];
|