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,
},
};
});
|