-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild.js
More file actions
57 lines (46 loc) · 2.12 KB
/
build.js
File metadata and controls
57 lines (46 loc) · 2.12 KB
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
import { minify } from "terser";
import { readFileSync, writeFileSync, mkdirSync } from "fs";
// ---------------[CONFIG: START]----------------------->
const inputFile = "src/index.js"; // source file
const readme = "src/README.md"; // source file
const distDir = "dist"; // output folder
const fileName = "index"; // output file
const timezone = 'Asia/Manila'; // build timezone
// ---------------[CONFIG: END]----------------------->
const timestamp = new Intl.DateTimeFormat("en-CA", { timeZone: timezone, year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", second: "2-digit", hour12: !1 }).format(new Date).replace(/,/g, "");
// read package.json
const pkg = JSON.parse(readFileSync("package.json", "utf-8"));
const versionDir = `versions/${pkg.version}`;
// banner comment (will go to both files)
const banner = `/*!
* ${pkg.name} v${pkg.version}
* Description: ${pkg.description}
* Author: ${pkg.author}
* GitHub: ${pkg.git}
* License: ${pkg.license}
* Build Date: ${timestamp} (${timezone})
*/`;
// make sure folders exist
mkdirSync(distDir, { recursive: true });
mkdirSync(versionDir, { recursive: true });
// read source
const code = readFileSync(inputFile, "utf-8");
// write non-minified
writeFileSync(`${distDir}/${fileName}.js`, banner + "\n" + code, "utf-8");
writeFileSync(`${versionDir}/${fileName}.js`, banner + "\n" + code, "utf-8");
// minify and write
const minified = await minify(code, { output: { preamble: banner } });
writeFileSync(`${distDir}/${fileName}.min.js`, minified.code, "utf-8");
writeFileSync(`${versionDir}/${fileName}.min.js`, minified.code, "utf-8");
// copy README
const readmeContent = readFileSync(readme, "utf-8");
writeFileSync(`${distDir}/README.md`, readmeContent, "utf-8");
writeFileSync(`${versionDir}/README.md`, readmeContent, "utf-8");
writeFileSync(`README.md`, readmeContent, "utf-8");
console.log(`✅ Build complete at ${timestamp} (${timezone}):
- ${distDir}/${fileName}.js
- ${distDir}/${fileName}.min.js
- ${distDir}/README.md
- ${versionDir}/${fileName}.js
- ${versionDir}/${fileName}.min.js
- ${versionDir}/README.md`);