/
build.js
40 lines (34 loc) · 1 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
const fs = require('fs-extra')
const chalk = require('chalk')
const execa = require('execa')
const { gzipSync } = require('zlib')
const { compress } = require('brotli')
async function run(config, files) {
await Promise.all([build(config), copy()])
checkAllSizes(files)
}
async function build(config) {
await execa('rollup', ['-c', config], { stdio: 'inherit' })
}
async function copy() {
await fs.copy('src/index.mjs', 'dist/vuex.mjs')
}
function checkAllSizes(files) {
console.log()
files.map((f) => checkSize(f))
console.log()
}
function checkSize(file) {
const f = fs.readFileSync(file)
const minSize = (f.length / 1024).toFixed(2) + 'kb'
const gzipped = gzipSync(f)
const gzippedSize = (gzipped.length / 1024).toFixed(2) + 'kb'
const compressed = compress(f)
const compressedSize = (compressed.length / 1024).toFixed(2) + 'kb'
console.log(
`${chalk.gray(
chalk.bold(file)
)} size:${minSize} / gzip:${gzippedSize} / brotli:${compressedSize}`
)
}
module.exports = { run }