]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
chore: log stats in size script
authorEvan You <evan@vuejs.org>
Sun, 11 Aug 2024 13:48:08 +0000 (21:48 +0800)
committerEvan You <evan@vuejs.org>
Sun, 11 Aug 2024 13:48:08 +0000 (21:48 +0800)
scripts/usage-size.ts

index d05273de076d10794ef249e64d93850fc2cc9161..aa8a29fa93228064c97b4d6dfc4a6628ce9406cf 100644 (file)
@@ -5,6 +5,20 @@ import nodeResolve from '@rollup/plugin-node-resolve'
 import { minify } from '@swc/core'
 import replace from '@rollup/plugin-replace'
 import { brotliCompressSync, gzipSync } from 'node:zlib'
+import { parseArgs } from 'node:util'
+import pico from 'picocolors'
+import prettyBytes from 'pretty-bytes'
+
+const {
+  values: { write },
+} = parseArgs({
+  options: {
+    write: {
+      type: 'boolean',
+      default: false,
+    },
+  },
+})
 
 const sizeDir = path.resolve('temp/size')
 const entry = path.resolve('./packages/vue/dist/vue.runtime.esm-bundler.js')
@@ -34,6 +48,7 @@ const presets: Preset[] = [
 main()
 
 async function main() {
+  console.log()
   const tasks: ReturnType<typeof generateBundle>[] = []
   for (const preset of presets) {
     tasks.push(generateBundle(preset))
@@ -46,7 +61,7 @@ async function main() {
   await mkdir(sizeDir, { recursive: true })
   await writeFile(
     path.resolve(sizeDir, '_usages.json'),
-    JSON.stringify(results),
+    JSON.stringify(results, null, 2),
     'utf-8',
   )
 }
@@ -91,6 +106,16 @@ async function generateBundle(preset: Preset) {
   const gzip = gzipSync(minified).length
   const brotli = brotliCompressSync(minified).length
 
+  if (write) {
+    await writeFile(path.resolve(sizeDir, preset.name + '.js'), bundled)
+  }
+
+  console.log(
+    `${pico.green(pico.bold(preset.name))} - min:${prettyBytes(
+      size,
+    )} / gzip:${prettyBytes(gzip)} / brotli:${prettyBytes(brotli)}`,
+  )
+
   return {
     name: preset.name,
     size,