feat: size report for runtime vapor

This commit is contained in:
三咲智子 Kevin Deng 2023-11-17 03:15:12 +08:00
parent 2a0a3dd059
commit c92cdd26c4
No known key found for this signature in database
GPG Key ID: 69992F2250DFD93E
2 changed files with 21 additions and 9 deletions

View File

@ -11,7 +11,7 @@
"size": "run-s \"size-*\" && tsx scripts/usage-size.ts",
"size-global": "node scripts/build.js vue runtime-dom -f global -p --size",
"size-esm-runtime": "node scripts/build.js vue -f esm-bundler-runtime",
"size-esm": "node scripts/build.js runtime-dom runtime-core reactivity shared -f esm-bundler",
"size-esm": "node scripts/build.js runtime-dom runtime-vapor runtime-core reactivity shared -f esm-bundler",
"check": "tsc --incremental --noEmit",
"lint": "eslint --cache --ext .ts packages/*/{src,__tests__}/**.ts",
"format": "prettier --write --cache \"**/*.[tj]s?(x)\"",

View File

@ -7,17 +7,23 @@ import replace from '@rollup/plugin-replace'
import { brotliCompressSync, gzipSync } from 'node:zlib'
const sizeDir = path.resolve('temp/size')
const entry = path.resolve('./packages/vue/dist/vue.runtime.esm-bundler.js')
const vue = path.resolve('./packages/vue/dist/vue.runtime.esm-bundler.js')
const vapor = path.resolve('./packages/vue/vapor/index.mjs')
interface Preset {
name: string
imports: string[]
imports: '*' | string[]
from: string
}
const presets: Preset[] = [
{ name: 'createApp', imports: ['createApp'] },
{ name: 'createSSRApp', imports: ['createSSRApp'] },
{ name: 'defineCustomElement', imports: ['defineCustomElement'] },
{ name: 'createApp', imports: ['createApp'], from: vue },
{ name: 'createSSRApp', imports: ['createSSRApp'], from: vue },
{
name: 'defineCustomElement',
imports: ['defineCustomElement'],
from: vue
},
{
name: 'overall',
imports: [
@ -27,8 +33,10 @@ const presets: Preset[] = [
'Transition',
'KeepAlive',
'Suspense'
]
}
],
from: vue
},
{ name: 'vapor', imports: '*', from: vapor }
]
main()
@ -53,7 +61,11 @@ async function main() {
async function generateBundle(preset: Preset) {
const id = 'virtual:entry'
const content = `export { ${preset.imports.join(', ')} } from '${entry}'`
const exportSpecifiers =
preset.imports === '*'
? `* as ${preset.name}`
: `{ ${preset.imports.join(', ')} }`
const content = `export ${exportSpecifiers} from '${preset.from}'`
const result = await rollup({
input: id,
plugins: [