-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathbuild.mjs
105 lines (89 loc) · 2.27 KB
/
build.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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import * as fs from 'fs';
import * as fsExtra from 'fs-extra';
import * as htmlMinifier from 'html-minifier';
import { transform } from 'lightningcss';
import { minify } from 'uglify-js';
minifyFiles();
async function minifyFiles() {
function minifyJS(srcPath) {
fs.readdir(srcPath, (err, files) => {
files.forEach(async (filename) => {
let path = srcPath+filename
let stats = fs.statSync(path);
if (stats.isFile()) {
fs.readFile(path, 'utf8' , async (err, data) => {
if (err) {
console.error(err)
return;
}
// Minify the input code
const minifiedCode = minify(data).code;
fs.writeFile(path, minifiedCode, () => {
console.log('Done!')
});
})
}
})
});
}
function minifyCSS(srcPath) {
fs.readdir(srcPath, (err, files) => {
files.forEach(filename => {
let path = srcPath+filename
/* minify(path, {minifyCSS: true}).then(content => {
fs.writeFile(path, content, () => {
console.log('Done!')
});
}) */
fs.readFile(path, 'utf8' , (err, data) => {
if (err) {
console.error(err)
return;
}
let { code, map } = transform({
filename,
targets: {
chrome: 95,
},
code: Buffer.from(data),
minify: true,
sourceMap: false
});
fs.writeFile(path, code, () => {
console.log('Done!')
});
})
})
});
}
function minifyHTML(srcPath) {
fs.readdir(srcPath, (err, files) => {
files.forEach(filename => {
if (filename.endsWith('.html')) {
let path = srcPath+filename;
fs.readFile(path, 'utf8' , (err, data) => {
if (err) {
console.error(err)
return
}
let content = htmlMinifier.minify(data, {
removeComments: true,
collapseWhitespace: true,
})
fs.writeFile(path, content, () => {
console.log('Done!')
});
})
}
})
});
}
await fsExtra.remove('./deploy/codetmp/')
fsExtra.copySync('./codetmp', './deploy/codetmp');
minifyHTML('./deploy/codetmp/');
minifyHTML('./deploy/codetmp/views/');
minifyCSS('./deploy/codetmp/css/');
minifyJS('./deploy/codetmp/js/');
minifyJS('./deploy/codetmp/js/require/');
minifyJS('./deploy/codetmp/js/components/');
}