-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.js
45 lines (37 loc) · 1.06 KB
/
build.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
/*
* build.js
* Scripts and styles compilation
*/
import fs from "node:fs";
import { join } from "node:path";
import * as sass from "sass";
import * as terser from "terser";
/** Source files */
const src = {
styles: join(import.meta.dirname, "src/styles/main.scss"),
scripts: [
join(import.meta.dirname, "src/scripts/main.js")
]
};
/** Output files */
const dist = {
/** Output directory path */
dir: join(import.meta.dirname, "dist"),
/** Output files name */
file: "diapo"
};
/*
* Build styles and scripts
*/
process.stderr.write("Building...");
fs.mkdirSync(dist.dir, { recursive: true });
// Styles
const style = sass.compile(src.styles, { style: "compressed" }).css.trim();
fs.writeFileSync(join(dist.dir, `${dist.file}.min.css`), style, "utf8");
// Scripts
let script = src.scripts
.map(s => fs.readFileSync(s, "utf8"))
.reduce((acc, val) => `${acc}\n${val}`);
script = (await terser.minify(script, { mangle: false })).code;
fs.writeFileSync(join(dist.dir, `${dist.file}.min.js`), script, "utf8");
process.stderr.write(`\rBuilding... Done\n`);