const path = require('path') const { nodeResolve } = require('@rollup/plugin-node-resolve') const progress = require('rollup-plugin-progress') const replace = require('@rollup/plugin-replace') const globals = require('rollup-plugin-node-globals') const commonjs = require('@rollup/plugin-commonjs') const alias = require('@rollup/plugin-alias') const terser = require('@rollup/plugin-terser'); const scss = require('rollup-plugin-scss') const webWorkerLoader = require('@qortal/rollup-plugin-web-worker-loader'); const generateES5BuildConfig = require('./generateES5BuildConfig') const generateInputs = (tree, inputs = {}) => { for (const file of Object.values(tree)) { inputs[file.file.split('.')[0]] = file.source if (file.children) generateInputs(file.children, inputs) } return inputs } const generateBuildConfig = ({ elementComponents, functionalComponents, otherOutputs, apiComponents, aliases, options, inlineComponents }) => { const buildConfig = { outputs: [ { dir: 'es6', format: 'esm' } ], outputOptions: { sourcemap: false }, inputOptions: { onwarn: (warning, rollupWarn) => { if (warning.code !== 'CIRCULAR_DEPENDENCY') { rollupWarn(warning) } }, input: { main: options.inputFile, ...generateInputs(elementComponents) }, plugins: [ alias({ entries: Object.keys(aliases).map(find => { return { find, replacement: aliases[find] } }) }), nodeResolve({ preferBuiltins: false, mainFields: ['module', 'browser'] }), replace({ preventAssignment: true, "process.env.NODE_ENV": JSON.stringify("production"), }), commonjs(), globals(), progress(), webWorkerLoader(), scss({ output: options.sassOutputDir }), terser({ compress: true, output: { comments: false } }) ], preserveEntrySignatures: false, external: ['crypto'], context: 'window' }, options: { outputDir: options.outputDir } } for (const output of buildConfig.outputs) { output.dir = path.join(options.outputDir, output.dir) } const inlineConfigs = generateES5BuildConfig(inlineComponents, { outputDir: options.outputDir, aliases }) return { buildConfig, inlineConfigs } } module.exports = generateBuildConfig