Skip to content
Snippets Groups Projects
rollup.config.js 2.23 KiB
Newer Older
  • Learn to ignore specific revisions
  • Jonas Zohren's avatar
    Jonas Zohren committed
    import svelte from "rollup-plugin-svelte";
    import commonjs from "@rollup/plugin-commonjs";
    import resolve from "@rollup/plugin-node-resolve";
    import livereload from "rollup-plugin-livereload";
    import { terser } from "rollup-plugin-terser";
    import sveltePreprocess from "svelte-preprocess";
    import typescript from "@rollup/plugin-typescript";
    import css from "rollup-plugin-css-only";
    
    const production = !process.env.ROLLUP_WATCH;
    
    function serve() {
      let server;
    
      function toExit() {
        if (server) server.kill(0);
      }
    
      return {
        writeBundle() {
          if (server) return;
          server = require("child_process").spawn(
            "npm",
            ["run", "start", "--", "--dev"],
            {
              stdio: ["ignore", "inherit", "inherit"],
              shell: true,
            }
          );
    
          process.on("SIGTERM", toExit);
          process.on("exit", toExit);
        },
      };
    }
    
    export default {
      input: "src/main.ts",
      output: {
        sourcemap: true,
        format: "iife",
        name: "app",
        file: "public/build/bundle.js",
    
        inlineDynamicImports: true,
    
    Jonas Zohren's avatar
    Jonas Zohren committed
      },
      plugins: [
        svelte({
          preprocess: sveltePreprocess({ sourceMap: !production }),
          compilerOptions: {
            // enable run-time checks when not in production
            dev: !production,
          },
        }),
        // we'll extract any component CSS out into
        // a separate file - better for performance
        css({ 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(),
        typescript({
    
          sourceMap: true,
    
    Jonas Zohren's avatar
    Jonas Zohren committed
          inlineSources: !production,
        }),
    
        // In dev mode, call `npm run start` once
        // the bundle has been generated
        !production && serve(),
    
        // Watch the `public` directory and refresh the
        // browser on changes when not in production
        !production && livereload("public"),
    
        // If we're building for production (npm run build
        // instead of npm run dev), minify
        production && terser(),
      ],
      watch: {
        clearScreen: false,
      },
    };