import path from "path"; import svelte from "rollup-plugin-svelte"; 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"; import imageminPlugin from "rollup-plugin-imagemin"; import url from "@rollup/plugin-url"; 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 => ({ input: input, output: { format: 'es', sourcemap: true, dir: path.join(publicDir, 'js'), entryFileNames: (chunkInfo) => { const name = chunkInfo.facadeModuleId ? path.relative(buildDir, chunkInfo.facadeModuleId) : chunkInfo.name; return name + '.js'; }, chunkFileNames: '[name].js', }, plugins: [ imageminPlugin({ fileName: '../img/[name][extname]' }), svelte({ compilerOptions: { dev: !production, hydratable: true, }, }), // Extract css into separate files cssOnlyRollupPlugin({output: 'bundle.css'}), url({ include: [ '**/*.woff2?', '**/*.ttf', ], limit: 0, fileName: path.join('../', 'fonts', '[name][extname]'), }), // 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(publicDir), // Minify in production production && terser(), ], watch: { clearScreen: false, }, });