import { plugin as analysis } from 'rollup-plugin-analyzer'; import babel from 'rollup-plugin-babel'; import commonjs from 'rollup-plugin-commonjs'; import filesize from 'rollup-plugin-filesize'; import nodeExternal from 'rollup-node-externals'; import nodeResolve from 'rollup-plugin-node-resolve'; import replace from 'rollup-plugin-replace'; const sharedConfig = { external: nodeExternal({ whitelist: [ '@skatejs/renderer-lit-html', '@skatejs/renderer-preact', '@skatejs/renderer-react', '@skatejs/renderer-snabbdom', 'hyperhtml', 'lit-html', 'preact', 'react', 'react-dom', 'skatejs', 'snabbdom', 'snabbdom-pragma', 'snabbdom/es/modules/attributes', 'snabbdom/es/modules/eventlisteners', 'snabbdom/es/modules/class', 'snabbdom/es/modules/props', 'snabbdom/es/modules/style', 'snabbdom/es/modules/dataset', 'snabbdom/vnode' ] }), input: 'index.js', plugins: [ nodeResolve({ // TODO: esnext isn't actually supported, so I temporarily added it esnext: true, jsnext: true, main: true, module: true, browser: false }), babel({ babelrc: false, include: '**/*.js', plugins: [ // TODO: later // 'transform-custom-element-classes', [ '@babel/plugin-transform-runtime', { regenerator: false, useESModules: true } ] ], presets: [ ['@babel/preset-react'], [ '@babel/preset-env', { targets: { // TODO: temporary, more later chrome: '70' } } ] ], runtimeHelpers: true }), replace({ 'process.env.NODE_ENV': JSON.stringify('production') }), commonjs({ namedExports: { 'react-dom': ['render', 'unmountComponentAtNode'] } }), filesize() ] }; const getBaseConfig = function(options = {}) { // npx rollup -c --config-analysis if (options['config-analysis']) { sharedConfig.plugins.push(analysis()); } return sharedConfig; }; const umdOutput = function(options) { const baseConfig = getBaseConfig(options); return Object.assign({}, baseConfig, { output: { file: 'dist/index.umd.js', format: 'umd', name: 'skateJsDemo' } }); }; export default function(options) { return [ // TODO: esModuleOutput(options), umdOutput(options) ]; }