1 | const path = require('path')
|
2 | const chalk = require('chalk')
|
3 | const { table } = require('table')
|
4 | const getStats = require('../util/get-stats.js')
|
5 |
|
6 | module.exports = async ({ program, env }) => {
|
7 | const data = [
|
8 | ['Type', 'Original', 'GZipped']
|
9 | ]
|
10 | const results = await getStats({
|
11 | distPath: path.join(program.cwd, './dist')
|
12 | })
|
13 | if (env.json) {
|
14 | console.log(results)
|
15 | } else {
|
16 | data.push(['☕ Minified VPAID JS', humanSize(results.vpaidJs[0]), `~${humanSize(results.vpaidJs[1])}`])
|
17 | data.push(['🖼 Images', humanSize(results.images[0]), `~${humanSize(results.images[1])}`])
|
18 | data.push(['📦 Components', humanSize(results.components[0]), `~${humanSize(results.components[1])}`])
|
19 | data.push(['🔤 Fonts', humanSize(results.fonts[0]), `~${humanSize(results.fonts[1])}`])
|
20 | data.push([
|
21 | '🔮 Total',
|
22 | chalk.underline(humanSize(Object.values(results).map(val => val[0]).reduce((a, b) => a + b, 0) - results.others[0])),
|
23 | `~${(humanSize(Object.values(results).map(val => val[1]).reduce((a, b) => a + b, 0) - results.others[1]))}`
|
24 | ])
|
25 | console.log(table(data))
|
26 | }
|
27 | return results
|
28 | }
|
29 |
|
30 | function humanSize (sizeInBytes) {
|
31 | return `${(sizeInBytes / 1024).toFixed(2)} KB`
|
32 | }
|