-
Notifications
You must be signed in to change notification settings - Fork 0
/
createZip.mjs
44 lines (37 loc) · 1.05 KB
/
createZip.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
import JsZip from 'jszip'
import fs from 'node:fs'
const zip = new JsZip(),
output = './src/assets/UniParse.zip',
ahk = './src/assets/UniParse.ahk',
exe = './src/assets/UniParse.exe'
zip
.file(
'UniParse.ahk', //output in same /data_path
fs.readFileSync(ahk) //data
)
.file('UniParse.exe', fs.readFileSync(exe))
.generateAsync({ type: "base64" })
.then(data => fs.writeFile(
output, data, 'base64',
err => {
if (err) throw err
else console.log(
ahk + ' ' + getSize(ahk) + '\n'
+ exe + ' ' + getSize(exe) + '\n'
+ output + ' ' + getSize(output)
)
}
)
)
//extra for console.log('size')
function getSize(file) {
return formatBytes(fs.statSync(file).size)
}
function formatBytes(bytes, decimals = 2) {
if (!+bytes) return '0 Bytes'
const k = 1024,
dm = decimals < 0 ? 0 : decimals,
sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
i = Math.floor(Math.log(bytes) / Math.log(k))
return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`
}