From e96f457d63f4da2c08cd4f516fbf192affe679cf Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 14 Nov 2024 23:32:46 +0800 Subject: [PATCH] build: remove comments when minifying + inline all enums --- rollup.config.js | 27 ++++++++++++------------ scripts/create-rolldown-config.js | 34 +++++++++++++------------------ scripts/inline-enums.js | 11 ++++++++-- 3 files changed, 36 insertions(+), 36 deletions(-) diff --git a/rollup.config.js b/rollup.config.js index 1d6f0da4c..da7de554b 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -46,6 +46,12 @@ const pkg = require(resolve(`package.json`)) const packageOptions = pkg.buildOptions || {} const name = packageOptions.filename || path.basename(packageDir) +const banner = `/** +* ${pkg.name} v${masterVersion} +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/` + const [enumPlugin, enumDefines] = inlineEnums() /** @type {Record} */ @@ -136,11 +142,7 @@ function createConfig(format, output, plugins = []) { (isGlobalBuild || isBrowserESMBuild || isBundlerESMBuild) && !packageOptions.enableNonBrowserBranches - output.banner = `/** -* ${pkg.name} v${masterVersion} -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/` + output.banner = banner output.exports = isCompatPackage ? 'auto' : 'named' if (isCJSBuild) { @@ -372,24 +374,21 @@ function createMinifiedConfig(/** @type {PackageFormat} */ format) { { name: 'swc-minify', - async renderChunk( - contents, - _, - { format, sourcemap, sourcemapExcludeSources }, - ) { - const { code, map } = await minifySwc(contents, { + async renderChunk(contents, _, { format }) { + const { code } = await minifySwc(contents, { module: format === 'es', + format: { + comments: false, + }, compress: { ecma: 2016, pure_getters: true, }, safari10: true, mangle: true, - sourceMap: !!sourcemap, - inlineSourcesContent: !sourcemapExcludeSources, }) - return { code, map: map || null } + return { code: banner + code, map: null } }, }, ], diff --git a/scripts/create-rolldown-config.js b/scripts/create-rolldown-config.js index cdc2320a3..7e8f04a23 100644 --- a/scripts/create-rolldown-config.js +++ b/scripts/create-rolldown-config.js @@ -50,6 +50,12 @@ export function createConfigsForPackage({ const packageOptions = pkg.buildOptions || {} const name = packageOptions.filename || path.basename(packageDir) + const banner = `/**! + * ${pkg.name} v${masterVersion} + * (c) 2018-present Yuxi (Evan) You and Vue contributors + * @license MIT + **/` + /** @type {Record} */ const outputConfigs = { 'esm-bundler': { @@ -134,12 +140,7 @@ export function createConfigsForPackage({ (isGlobalBuild || isBrowserESMBuild || isBundlerESMBuild) && !packageOptions.enableNonBrowserBranches - output.banner = `/** - * ${pkg.name} v${masterVersion} - * (c) 2018-present Yuxi (Evan) You and Vue contributors - * @license MIT - **/` - + output.banner = banner output.exports = isCompatPackage ? 'auto' : 'named' if (isCJSBuild) { output.esModule = true @@ -354,28 +355,21 @@ export function createConfigsForPackage({ [ { name: 'swc-minify', - async renderChunk( - contents, - _, - { - format, - sourcemap, - // @ts-expect-error not supported yet - sourcemapExcludeSources, - }, - ) { - const { code, map } = await minifySwc(contents, { + async renderChunk(contents, _, { format }) { + const { code } = await minifySwc(contents, { module: format === 'es', + format: { + comments: false, + }, compress: { ecma: 2016, pure_getters: true, }, safari10: true, mangle: true, - sourceMap: !!sourcemap, - inlineSourcesContent: !sourcemapExcludeSources, }) - return { code, map: map || null } + // swc removes banner + return { code: banner + code, map: null } }, }, ], diff --git a/scripts/inline-enums.js b/scripts/inline-enums.js index 88b2dca8c..e849384b3 100644 --- a/scripts/inline-enums.js +++ b/scripts/inline-enums.js @@ -49,7 +49,7 @@ export function scanEnums() { const defines = Object.create(null) // 1. grep for files with exported enum - const { stdout } = spawnSync('git', ['grep', `export enum`]) + const { stdout } = spawnSync('git', ['grep', `enum `]) const files = [ ...new Set( stdout @@ -74,12 +74,19 @@ export function scanEnums() { /** @type {Set} */ const enumIds = new Set() for (const node of res.program.body) { + let decl + if (node.type === 'TSEnumDeclaration') { + decl = node + } if ( node.type === 'ExportNamedDeclaration' && node.declaration && node.declaration.type === 'TSEnumDeclaration' ) { - const decl = node.declaration + decl = node.declaration + } + + if (decl) { const id = decl.id.name if (enumIds.has(id)) { throw new Error(