import commonjs from '@rollup/plugin-commonjs'; import resolve from '@rollup/plugin-node-resolve'; import { terser } from 'rollup-plugin-terser'; import typescript from '@rollup/plugin-typescript'; import css from 'rollup-plugin-css-only'; import serve from 'rollup-plugin-serve'; import { string } from 'rollup-plugin-string'; import copy from 'rollup-plugin-copy'; const production = !process.env.ROLLUP_WATCH || process.env.NODE_ENV === 'production'; const copy_targets = { targets: [ { src: 'public/index.html', dest: 'build' }, { src: 'src/plugins/*', dest: 'build/plugins' }, ], }; if (!production) { copy_targets.targets.push({ src: 'build/*', dest: 'examples/build' }); } export default { input: 'src/main.ts', output: [ { file: 'build/pyscript.js', format: 'iife', sourcemap: true, inlineDynamicImports: true, name: 'pyscript', }, { file: 'build/pyscript.min.js', format: 'iife', sourcemap: true, inlineDynamicImports: true, name: 'pyscript', plugins: [terser()], }, ], plugins: [ css({ output: 'pyscript.css' }), // Bundle all the Python files into the output file string({ include: './src/**/*.py', }), resolve({ browser: true, }), commonjs(), typescript({ sourceMap: !production, inlineSources: !production, }), // This will make sure that examples will always get the latest build folder copy(copy_targets), // production && terser(), !production && serve({ port: 8080, contentBase: 'examples', }), ], watch: { clearScreen: false, }, };