Просмотр исходного кода

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

Evan You 1 год назад
Родитель
Сommit
d376f00091
2 измененных файлов с 35 добавлено и 0 удалено
  1. 2 0
      rollup.config.js
  2. 33 0
      scripts/trim-vapor-exports.js

+ 2 - 0
rollup.config.js

@@ -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,
       }),

+ 33 - 0
scripts/trim-vapor-exports.js

@@ -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)
+          }
+        },
+      },
+    ]
+  }
+}