-
Notifications
You must be signed in to change notification settings - Fork 11
/
gulpfile.mjs
72 lines (69 loc) · 1.98 KB
/
gulpfile.mjs
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
64
65
66
67
68
69
70
71
72
import { readFileSync } from "fs";
import pkg from "gulp";
import concat from "gulp-concat";
import replace from "gulp-replace";
import { rollup } from "rollup";
import typescript from "@rollup/plugin-typescript";
import resolve from "@rollup/plugin-node-resolve";
import eslint from "@rbnlffl/rollup-plugin-eslint";
import svelte from "rollup-plugin-svelte";
import sveltePreprocess from "svelte-preprocess";
import commonjs from "@rollup/plugin-commonjs";
const { series, src, dest, task, watch } = pkg;
task("build", async () => {
const bundle = await rollup({
input: "./src/main.ts",
plugins: [
svelte({
include: '**/*.svelte',
preprocess: sveltePreprocess(),
emitCss: false,
onwarn: (warning, handler) => {
// e.g. don't warn on <marquee> elements, cos they're cool
if (warning.code === 'a11y-label-has-associated-control') return;
handler(warning);
},
}),
eslint({
filterInclude: "src/**/*",
filterExclude: [
"**/*.svelte",
"node_modules/**"
]
}),
resolve({ browser: true }),
typescript({ tsconfig: './tsconfig.json' }),
commonjs({ extensions: ['.js', '.ts'] }),
]
});
return bundle.write({
file: "./out/rollup.js",
format: "iife",
name: "library",
sourcemap: true
});
});
task("userscript", async () => {
let meta = JSON.parse(readFileSync("./package.json"));
return src(["./src/header.user.js", "./out/rollup.js"])
.pipe(replace(/include\$GULP_CSS/, readFileSync("./src/style.css", "utf8")))
.pipe(replace(/include\$GULP_METADATA/, [
`// @version ${meta.version}`,
`// @description ${meta.description}`,
`// @author ${meta.author}`,
].join('\n')))
.pipe(concat("./scoresaber.user.js"))
.pipe(dest("./"));
});
const _default = series("build", "userscript");
export { _default as default };
const _watch = function () {
watch([
"src/**/*.ts",
"src/**/*.css",
"src/**/*.svelte",
"src/**/*.user.js",
"./package.json",
], series("build", "userscript"));
};
export { _watch as watch };