-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathgulpfile.js
67 lines (60 loc) · 1.46 KB
/
gulpfile.js
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
import path from "node:path";
import { rmSync } from "node:fs";
import cssnano from "cssnano";
import gulp from "gulp";
import postcss from "gulp-postcss";
import postcssImport from "postcss-import";
import { rollup } from "rollup";
import { nodeResolve } from "@rollup/plugin-node-resolve";
import terser from "@rollup/plugin-terser";
const buildFolder = "dist/";
const jsFolder = "frontend/assets/js/";
const jsFiles = [
"iframe.js",
"iframe.build.js",
"main.js",
"main.build.js",
"jsontree.js",
];
const cssFiles = [
"frontend/assets/css/iframe.css",
"frontend/assets/css/main.css",
];
const jsDist = path.join(buildFolder, "js");
const cssDist = path.join(buildFolder, "css");
gulp.task("build:js", (done) => {
const promises = [];
jsFiles.forEach((jsFile) => {
promises.push(
new Promise((resolve) => {
rollup({
input: path.join(jsFolder, jsFile),
plugins: [nodeResolve(), terser()],
})
.then((bundle) => {
bundle.write({
dir: jsDist,
format: "esm",
});
resolve();
})
.catch((err) => console.error(err));
}),
);
});
return Promise.all(promises).then(() => done());
});
gulp.task("build:css", () =>
gulp
.src(cssFiles)
.pipe(postcss([postcssImport, cssnano]))
.pipe(gulp.dest(cssDist)),
);
gulp.task("clean", (done) => {
rmSync(buildFolder, { recursive: true, force: true });
return Promise.resolve();
});
gulp.task(
"build",
gulp.series("clean", gulp.parallel("build:js", "build:css")),
);