build: trim vapor intenral helper exports form runtime-core in non-esm-bunlder builds

This commit is contained in:
Evan You 2024-12-08 15:53:13 +08:00
parent 7e8edcd9cd
commit d376f00091
No known key found for this signature in database
GPG Key ID: 00E9AB7A6704CE0A
2 changed files with 35 additions and 0 deletions

View File

@ -15,6 +15,7 @@ import alias from '@rollup/plugin-alias'
import { entries } from './scripts/aliases.js'
import { inlineEnums } from './scripts/inline-enums.js'
import { minify as minifySwc } from '@swc/core'
import { trimVaporExportsPlugin } from './scripts/trim-vapor-exports.js'
/**
* @template T
@ -186,6 +187,7 @@ function createConfig(format, output, plugins = []) {
// used alone.
external: resolveExternal(),
plugins: [
...trimVaporExportsPlugin(format, pkg.name),
json({
namedExports: false,
}),

View File

@ -0,0 +1,33 @@
// @ts-check
/**
* runtime-core exports a number of internal helpers that are only used by
* runtime-vapor, which should be only preserved in vapor / esm-bundler builds.
* This plugin should be included as the first plugin for all other formats
* other than vapor / esm-bundler.
*
* @param {string} format
* @param {string} pkgName
* @returns {import('rollup').Plugin[]}
*/
export function trimVaporExportsPlugin(format, pkgName) {
if (
format === 'vapor' ||
format === 'esm-bundler' ||
pkgName === '@vue/runtime-vapor'
) {
return []
} else {
return [
{
name: 'trim-vapor-exports',
transform(code, id) {
if (id.endsWith('runtime-core/src/index.ts')) {
const index = code.lastIndexOf('// VAPOR ---')
return code.slice(0, index)
}
},
},
]
}
}