about summary refs log tree commit diff
path: root/assets/rollup.config.js
blob: 858b48da857da7d44fc83a1c2184efe7b274332b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import svelte from "rollup-plugin-svelte";
import commonjs from "@rollup/plugin-commonjs";
import resolve from "@rollup/plugin-node-resolve";
import { terser } from "rollup-plugin-terser";
import copy from "rollup-plugin-copy";
import sveltePreprocess from "svelte-preprocess";
import typescript from "@rollup/plugin-typescript";
import css from "rollup-plugin-css-only";

const production = !process.env.ROLLUP_WATCH;

export default require("fs")
    .readdirSync("src/entries/")
    .map((file, index) => {
        const name = require("path").parse(file).name;

        return {
            input: `src/entries/${name}.ts`,
            output: {
                format: "iife",
                sourcemap: !production,
                name: name,
                dir: "../priv/static/",
                entryFileNames: "js/[name].js",
            },
            plugins: [
                svelte({
                    preprocess: sveltePreprocess({ sourceMap: !production }),
                    compilerOptions: {
                        // enable run-time checks when not in production
                        dev: !production,
                    },
                }),

                css({ output: `css/${name}.css` }),

                resolve({
                    browser: true,
                    dedupe: ["svelte"],
                }),
                commonjs(),
                typescript({
                    sourceMap: !production,
                    inlineSources: !production,
                }),

                // If we're building for production (npm run build
                // instead of npm run dev), minify
                production && terser(),

				// Copy assets if we haven't yet done so
                index === 0 &&
                    copy({
                        targets: [
                            { src: "public/**/*", dest: "../priv/static" },
                        ],
                    }),
            ],
            watch: {
                clearScreen: false,
            },
        };
    });