1
0

build.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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. const files = [
  7. 'dist/vuex.esm-browser.js',
  8. 'dist/vuex.esm-browser.prod.js',
  9. 'dist/vuex.esm-bundler.js',
  10. 'dist/vuex.global.js',
  11. 'dist/vuex.global.prod.js',
  12. 'dist/vuex.cjs.js'
  13. ]
  14. async function run() {
  15. await build()
  16. checkAllSizes()
  17. }
  18. async function build() {
  19. await execa('rollup', ['-c', 'rollup.config.js'], { stdio: 'inherit' })
  20. }
  21. function checkAllSizes() {
  22. console.log()
  23. files.map((f) => checkSize(f))
  24. console.log()
  25. }
  26. function checkSize(file) {
  27. const f = fs.readFileSync(file)
  28. const minSize = (f.length / 1024).toFixed(2) + 'kb'
  29. const gzipped = gzipSync(f)
  30. const gzippedSize = (gzipped.length / 1024).toFixed(2) + 'kb'
  31. const compressed = compress(f)
  32. const compressedSize = (compressed.length / 1024).toFixed(2) + 'kb'
  33. console.log(
  34. `${chalk.gray(
  35. chalk.bold(file)
  36. )} size:${minSize} / gzip:${gzippedSize} / brotli:${compressedSize}`
  37. )
  38. }
  39. run()