mediacms/frontend/packages/player/config/includes/rollup_builds.js

114 wiersze
2.8 KiB
JavaScript
Executable File

import gzip from 'rollup-plugin-gzip';
import postcss from 'rollup-plugin-postcss';
import babel from 'rollup-plugin-babel';
import cleanup from 'rollup-plugin-cleanup';
// import { uglify } from "rollup-plugin-uglify";
import commonjs from '@rollup/plugin-commonjs';
import resolve from '@rollup/plugin-node-resolve';
import visualizer from 'rollup-plugin-visualizer';
import json from '@rollup/plugin-json';
export default function rollup_builds(input_file, output_folder, pkg) {
const package_name = pkg.name;
const dependencies = pkg.dependencies;
const dependencies_names = !!dependencies ? Object.keys(pkg.dependencies) : [];
const esm_format = 'es';
const browser_format = 'umd';
const commonjs_format = 'cjs';
const postcss_config = {
extract: true,
modules: false, // Avoid adding prefixes to classnames (etc).
extensions: ['.css', '.sss', '.pcss', '.scss'],
};
const postcss_plugin = postcss(postcss_config);
const postcss_plugin_minimized = postcss({ ...postcss_config, minimize: true });
const commonjs_resolve_config = {
// pass custom options to the resolve plugin
customResolveOptions: { moduleDirectory: 'node_modules' },
};
function beautify_plugin() {
return cleanup(/*{
maxEmptyLines: 1,
sourcemap: false,
}*/);
}
function visualizer_plugin(name) {
return visualizer({
title: name,
filename: output_folder + '/visualizer/' + name + '.html',
});
}
function es_build(filename, visualize, bundle) {
const plugins = [postcss_plugin, json(), beautify_plugin()];
if (!!visualize) {
plugins.push(visualizer_plugin(filename));
}
return {
input: input_file,
external: !!bundle ? {} : dependencies_names,
output: [{ format: esm_format, file: filename }],
plugins: plugins,
};
}
function commonjs_build(filename, visualize, bundle) {
const plugins = [postcss_plugin, json(), resolve(commonjs_resolve_config), beautify_plugin()];
if (!!visualize) {
plugins.push(visualizer_plugin(filename));
}
return {
input: input_file,
external: !!bundle ? {} : dependencies_names,
output: [{ format: commonjs_format, file: filename }],
plugins: plugins,
};
}
function browser_build(filename, visualize, minimize, compact) {
const plugins = [
!!minimize ? postcss_plugin_minimized : postcss_plugin,
json(),
babel(),
resolve(),
commonjs(),
beautify_plugin(),
];
if (!!minimize) {
// plugins.push( uglify() );
if (!!compact) {
plugins.push(gzip());
}
}
if (!!visualize) {
plugins.push(visualizer_plugin(filename));
}
return {
input: input_file,
output: { name: package_name, format: browser_format, file: filename },
plugins: plugins,
};
}
return Object.freeze({
es: es_build,
browser: browser_build,
commonjs: commonjs_build,
});
}