From 4126a9dd51f7d506160a59e5d5f2d19d253ea3dc Mon Sep 17 00:00:00 2001 From: Evan You Date: Mon, 23 Mar 2020 15:09:29 -0400 Subject: [PATCH] build: add runtime-global build for vue --- packages/vue/package.json | 1 + rollup.config.js | 23 +++++++++++++---------- scripts/build.js | 33 +++++++++++++++++++-------------- 3 files changed, 33 insertions(+), 24 deletions(-) diff --git a/packages/vue/package.json b/packages/vue/package.json index 271591fe..4f42e99d 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -18,6 +18,7 @@ "esm-bundler-runtime", "cjs", "global", + "global-runtime", "esm" ] }, diff --git a/rollup.config.js b/rollup.config.js index 8aa1d198..7a35f0cb 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -23,11 +23,6 @@ const outputConfigs = { file: resolve(`dist/${name}.esm-bundler.js`), format: `es` }, - // main "vue" package only - 'esm-bundler-runtime': { - file: resolve(`dist/${name}.runtime.esm-bundler.js`), - format: `es` - }, cjs: { file: resolve(`dist/${name}.cjs.js`), format: `cjs` @@ -39,6 +34,15 @@ const outputConfigs = { esm: { file: resolve(`dist/${name}.esm.js`), format: `es` + }, + // main "vue" package only + 'esm-bundler-runtime': { + file: resolve(`dist/${name}.runtime.esm-bundler.js`), + format: `es` + }, + 'global-runtime': { + file: resolve(`dist/${name}.runtime.global.js`), + format: 'iife' } } @@ -54,7 +58,7 @@ if (process.env.NODE_ENV === 'production') { if (format === 'cjs' && packageOptions.prod !== false) { packageConfigs.push(createProductionConfig(format)) } - if (format === 'global' || format === 'esm') { + if (/global/.test(format) || format === 'esm') { packageConfigs.push(createMinifiedConfig(format)) } }) @@ -73,7 +77,7 @@ function createConfig(format, output, plugins = []) { const isProductionBuild = process.env.__DEV__ === 'false' || /\.prod\.js$/.test(output.file) - const isGlobalBuild = format === 'global' + const isGlobalBuild = /global/.test(format) const isRawESMBuild = format === 'esm' const isNodeBuild = format === 'cjs' const isBundlerESMBuild = /esm-bundler/.test(format) @@ -102,8 +106,7 @@ function createConfig(format, output, plugins = []) { // during a single build. hasTSChecked = true - const entryFile = - format === 'esm-bundler-runtime' ? `src/runtime.ts` : `src/index.ts` + const entryFile = /runtime$/.test(format) ? `src/runtime.ts` : `src/index.ts` const external = isGlobalBuild || isRawESMBuild @@ -210,7 +213,7 @@ function createMinifiedConfig(format) { return createConfig( format, { - file: resolve(`dist/${name}.${format}.prod.js`), + file: outputConfigs[format].file.replace(/\.js$/, '.prod.js'), format: outputConfigs[format].format }, [ diff --git a/scripts/build.js b/scripts/build.js index 220512e7..063acd51 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -148,18 +148,23 @@ function checkAllSizes(targets) { function checkSize(target) { const pkgDir = path.resolve(`packages/${target}`) - const esmProdBuild = `${pkgDir}/dist/${target}.global.prod.js` - if (fs.existsSync(esmProdBuild)) { - const file = fs.readFileSync(esmProdBuild) - const minSize = (file.length / 1024).toFixed(2) + 'kb' - const gzipped = gzipSync(file) - const gzippedSize = (gzipped.length / 1024).toFixed(2) + 'kb' - const compressed = compress(file) - const compressedSize = (compressed.length / 1024).toFixed(2) + 'kb' - console.log( - `${chalk.gray( - chalk.bold(target) - )} min:${minSize} / gzip:${gzippedSize} / brotli:${compressedSize}` - ) - } + checkFileSize(`${pkgDir}/dist/${target}.global.prod.js`) + checkFileSize(`${pkgDir}/dist/${target}.runtime.global.prod.js`) +} + +function checkFileSize(filePath) { + if (!fs.existsSync(filePath)) { + return + } + const file = fs.readFileSync(filePath) + const minSize = (file.length / 1024).toFixed(2) + 'kb' + const gzipped = gzipSync(file) + const gzippedSize = (gzipped.length / 1024).toFixed(2) + 'kb' + const compressed = compress(file) + const compressedSize = (compressed.length / 1024).toFixed(2) + 'kb' + console.log( + `${chalk.gray( + chalk.bold(path.basename(filePath)) + )} min:${minSize} / gzip:${gzippedSize} / brotli:${compressedSize}` + ) }