1
0

build.js 924 B

123456789101112131415161718192021222324252627282930313233343536
  1. const fs = require('fs-extra')
  2. const chalk = require('chalk')
  3. const execa = require('execa')
  4. const { gzipSync } = require('zlib')
  5. const { compress } = require('brotli')
  6. async function run(config, files) {
  7. await build(config)
  8. checkAllSizes(files)
  9. }
  10. async function build(config) {
  11. await execa('rollup', ['-c', config], { stdio: 'inherit' })
  12. }
  13. function checkAllSizes(files) {
  14. console.log()
  15. files.map((f) => checkSize(f))
  16. console.log()
  17. }
  18. function checkSize(file) {
  19. const f = fs.readFileSync(file)
  20. const minSize = (f.length / 1024).toFixed(2) + 'kb'
  21. const gzipped = gzipSync(f)
  22. const gzippedSize = (gzipped.length / 1024).toFixed(2) + 'kb'
  23. const compressed = compress(f)
  24. const compressedSize = (compressed.length / 1024).toFixed(2) + 'kb'
  25. console.log(
  26. `${chalk.gray(
  27. chalk.bold(file)
  28. )} size:${minSize} / gzip:${gzippedSize} / brotli:${compressedSize}`
  29. )
  30. }
  31. module.exports = { run }