rollup.common.js (63 lines of code) (raw):
import resolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import typescript from 'rollup-plugin-typescript2';
import babel from 'rollup-plugin-babel';
import postcss from 'rollup-plugin-postcss';
import minify from 'rollup-plugin-babel-minify';
import visualizer from 'rollup-plugin-visualizer';
import { sizeSnapshot as snapshot } from 'rollup-plugin-size-snapshot';
import progress from 'rollup-plugin-progress';
import pcssPresetEnv from 'postcss-preset-env';
import autoprefixer from 'autoprefixer';
import cssnano from 'cssnano';
const extensions = ['.js', '.jsx', '.ts', '.tsx'];
export default ({ isDev = false } = {}) => {
const sourceMap = isDev ? 'inline' : false;
const output = [
{
file: `dist/cjs/dd.BreakpointContainer${isDev ? '.dev' : '.min'}.js`,
format: 'cjs',
sourceMap,
globals: { react: 'React' },
exports: 'named',
},
];
if (isDev) {
output.push({
file: 'dist/dd.BreakpointContainer.esm.js',
sourceMap,
format: 'esm',
});
}
return {
input: 'src/index.ts',
external: ['react'],
output,
plugins: [
progress(),
resolve({ extensions }),
babel({ sourceMap }),
typescript({ module: 'CommonJS' }),
commonjs({ sourceMap, extensions }),
postcss({
inject: true,
sourceMap,
exclude: 'node_modules/**',
plugins: [pcssPresetEnv(), autoprefixer(), !isDev && cssnano()],
}),
...(isDev
? []
: [
minify(),
visualizer({
sourceMap: true,
filename: 'reports/dependency-graph.html',
title: 'Production Build Report',
}),
snapshot({
snapshotPath: 'reports/size-snapshot.json',
}),
]),
],
};
};