import path from "path"; import svelte from "rollup-plugin-svelte"; import {sveltePreprocess} from "svelte-preprocess/dist/autoProcess"; import cssOnlyRollupPlugin from "rollup-plugin-css-only"; import resolve from "@rollup/plugin-node-resolve"; import commonjs from "@rollup/plugin-commonjs"; import {terser} from "rollup-plugin-terser"; import livereloadRollupPlugin from "rollup-plugin-livereload"; const production = process.env.ENV === 'production'; const buildDir = process.env.BUILD_DIR; const publicDir = process.env.PUBLIC_DIR; const input = process.env.INPUT.split(':'); export default commandLineArgs => { const type = commandLineArgs.input; delete commandLineArgs.input; return { input: input, output: { sourcemap: true, format: 'es', name: 'bundle', dir: path.join(publicDir, 'js'), entryFileNames: (chunkInfo) => { const name = chunkInfo.facadeModuleId ? path.relative(buildDir, chunkInfo.facadeModuleId) : chunkInfo.name; return name + '.js'; }, }, plugins: [ svelte({ preprocess: sveltePreprocess({ typescript: { tsconfigFile: 'tsconfig.views.json', }, }), compilerOptions: { dev: !production, hydratable: true, }, }), // Extract css into separate files cssOnlyRollupPlugin({output: 'bundle.css'}), // If you have external dependencies installed from // npm, you'll most likely need these plugins. In // some cases you'll need additional configuration - // consult the documentation for details: // https://github.com/rollup/plugins/tree/master/packages/commonjs resolve({ browser: true, dedupe: ['svelte'], }), commonjs(), // Live reload in dev !production && !!commandLineArgs.watch && livereloadRollupPlugin('public'), // Minify in production production && terser(), ], watch: { clearScreen: false, }, }; };