/* eslint-disable node/no-unpublished-import */ import commonjs from '@rollup/plugin-commonjs' import resolve from '@rollup/plugin-node-resolve' import { terser } from 'rollup-plugin-terser' import ts from '@rollup/plugin-typescript' import babel from '@rollup/plugin-babel' import builtins from 'builtin-modules' //import sourcemaps from 'rollup-plugin-sourcemaps' import jsonfile from '@rollup/plugin-json' import alias from '@rollup/plugin-alias' import { Plugin, RollupOptions, OutputOptions } from 'rollup' if (!process.env.NODE_ENV || process.env.NODE_ENV == '') { throw Error('"process.env.NODE_ENV" needs to be set when bundling with Rollup.') } const sourcemap = process.env.NODE_ENV !== 'production' || process.env.SOURCEMAPS === 'true' function configurePlugins( rootDir: string, typescript = true, production = process.env.NODE_ENV === 'production' ): Plugin[] { const common: Plugin[] = [ resolve({ rootDir, extensions: ['.mjs', '.js', '.json', '.jsx', '.node'], }), commonjs({ sourceMap: sourcemap, }), jsonfile({}), ] if (typescript) { common.push(ts()) } if (production) { return [ //sourcemaps(), alias({ entries: [], }), ...common, babel({ babelHelpers: 'bundled', plugins: [ 'babel-plugin-inferno', [ 'transform-inline-environment-variables', { include: ['NODE_ENV'], }, ], 'transform-remove-undefined', 'transform-inline-consecutive-adds', 'transform-property-literals', 'transform-regexp-constructors', 'minify-guarded-expressions', [ 'minify-dead-code-elimination', { keepFnName: true, /* eslint unicorn/prevent-abbreviations: "off" */ keepFnArgs: true, keepClassName: true, tdz: true, }, ], ], configFile: false, babelrc: false, }), terser({ toplevel: true, ecma: 2020, parse: { shebang: true, }, output: { comments: false, shebang: true, //preamble: formatLicense(), }, }), ] } else { return [ //sourcemaps(), alias({ entries: [ { find: 'inferno', replacement: __dirname + '/node_modules/inferno/dist/index.dev.esm.js', }, ], }), ...common, babel({ babelHelpers: 'bundled', plugins: [ 'babel-plugin-inferno', ['transform-inline-environment-variables', { include: ['NODE_ENV'] }], 'transform-inline-consecutive-adds', [ 'minify-dead-code-elimination', { keepFnName: true, /* eslint unicorn/prevent-abbreviations: "off" */ keepFnArgs: true, keepClassName: true, tdz: true, }, ], ], configFile: false, babelrc: false, }), terser({ ecma: 2020, keep_classnames: true, //keep_fnames: true, toplevel: true, parse: { shebang: true, }, compress: { /* eslint unicorn/prevent-abbreviations: "off" */ defaults: false, arrows: true, evaluate: true, properties: true, computed_props: true, dead_code: true, }, output: { comments: 'some', shebang: true, beautify: true, semicolons: false, keep_quoted_props: true, indent_level: 2, max_line_len: 100, }, }), ] } } function outputBundle(filename: string): OutputOptions { return { file: filename, format: 'es', sourcemap, } } const bundles: RollupOptions[] = [ { input: 'packages/basic/src/main.ts', external: builtins.concat('electron'), plugins: configurePlugins('packages/basic'), output: { ...outputBundle('packages/dist/main.js'), format: 'cjs', }, }, ] export default bundles