diff --git a/packages/server-renderer/package.json b/packages/server-renderer/package.json index 19899595f2c..a8876776c75 100644 --- a/packages/server-renderer/package.json +++ b/packages/server-renderer/package.json @@ -12,8 +12,9 @@ "buildOptions": { "name": "VueServerRenderer", "formats": [ - "esm-bundler", - "cjs" + "cjs", + "basic-cjs", + "esm-bundler" ] }, "repository": { diff --git a/packages/server-renderer/src/basic.ts b/packages/server-renderer/src/basic.ts new file mode 100644 index 00000000000..59ceccefb73 --- /dev/null +++ b/packages/server-renderer/src/basic.ts @@ -0,0 +1,27 @@ +// public +export { SSRContext } from './render' +export { renderToString } from './renderToString' + +// internal runtime helpers +export { renderVNode as ssrRenderVNode } from './render' +export { ssrRenderComponent } from './helpers/ssrRenderComponent' +export { ssrRenderSlot } from './helpers/ssrRenderSlot' +export { ssrRenderTeleport } from './helpers/ssrRenderTeleport' +export { + ssrRenderClass, + ssrRenderStyle, + ssrRenderAttrs, + ssrRenderAttr, + ssrRenderDynamicAttr +} from './helpers/ssrRenderAttrs' +export { ssrInterpolate } from './helpers/ssrInterpolate' +export { ssrRenderList } from './helpers/ssrRenderList' +export { ssrRenderSuspense } from './helpers/ssrRenderSuspense' + +// v-model helpers +export { + ssrLooseEqual, + ssrLooseContain, + ssrRenderDynamicModel, + ssrGetDynamicModelProps +} from './helpers/ssrVModelHelpers' diff --git a/packages/server-renderer/src/index.ts b/packages/server-renderer/src/index.ts index 9c5066e851e..7943482fd53 100644 --- a/packages/server-renderer/src/index.ts +++ b/packages/server-renderer/src/index.ts @@ -1,28 +1,3 @@ // public -export { SSRContext } from './render' -export { renderToString } from './renderToString' +export * from './basic' export { renderToStream } from './renderToStream' - -// internal runtime helpers -export { renderVNode as ssrRenderVNode } from './render' -export { ssrRenderComponent } from './helpers/ssrRenderComponent' -export { ssrRenderSlot } from './helpers/ssrRenderSlot' -export { ssrRenderTeleport } from './helpers/ssrRenderTeleport' -export { - ssrRenderClass, - ssrRenderStyle, - ssrRenderAttrs, - ssrRenderAttr, - ssrRenderDynamicAttr -} from './helpers/ssrRenderAttrs' -export { ssrInterpolate } from './helpers/ssrInterpolate' -export { ssrRenderList } from './helpers/ssrRenderList' -export { ssrRenderSuspense } from './helpers/ssrRenderSuspense' - -// v-model helpers -export { - ssrLooseEqual, - ssrLooseContain, - ssrRenderDynamicModel, - ssrGetDynamicModelProps -} from './helpers/ssrVModelHelpers' diff --git a/rollup.config.js b/rollup.config.js index 6bcbd1e6798..16d9918f855 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -37,6 +37,12 @@ const outputConfigs = { format: `iife` }, + // basic builds, for 'server-renderer' package only + 'basic-cjs': { + file: resolve(`dist/${name}.basic-cjs.js`), + format: `cjs` + }, + // runtime-only builds, for main "vue" package only 'esm-bundler-runtime': { file: resolve(`dist/${name}.runtime.esm-bundler.js`), @@ -51,7 +57,7 @@ const outputConfigs = { format: 'iife' } } - +const isCjs = format => /^(basic-)?cjs$/.test(format) const defaultFormats = ['esm-bundler', 'cjs'] const inlineFormats = process.env.FORMATS && process.env.FORMATS.split(',') const packageFormats = inlineFormats || packageOptions.formats || defaultFormats @@ -64,7 +70,7 @@ if (process.env.NODE_ENV === 'production') { if (packageOptions.prod === false) { return } - if (format === 'cjs') { + if (isCjs(format)) { packageConfigs.push(createProductionConfig(format)) } if (/^(global|esm-browser)(-runtime)?/.test(format)) { @@ -89,7 +95,7 @@ function createConfig(format, output, plugins = []) { process.env.__DEV__ === 'false' || /\.prod\.js$/.test(output.file) const isBundlerESMBuild = /esm-bundler/.test(format) const isBrowserESMBuild = /esm-browser/.test(format) - const isNodeBuild = format === 'cjs' + const isNodeBuild = isCjs(format) const isGlobalBuild = /global/.test(format) const isCompatBuild = !!packageOptions.compat const isCompatPackage = pkg.name === '@vue/compat' @@ -119,7 +125,11 @@ function createConfig(format, output, plugins = []) { // during a single build. hasTSChecked = true - let entryFile = /runtime$/.test(format) ? `src/runtime.ts` : `src/index.ts` + let entryFile = /^basic-/.test(format) + ? `src/basic.ts` + : /runtime$/.test(format) + ? `src/runtime.ts` + : `src/index.ts` // the compat build needs both default AND named exports. This will cause // Rollup to complain for non-ESM targets, so we use separate entries for @@ -155,7 +165,7 @@ function createConfig(format, output, plugins = []) { } const nodePlugins = - packageOptions.enableNonBrowserBranches && format !== 'cjs' + packageOptions.enableNonBrowserBranches && !isCjs(format) ? [ // @ts-ignore require('@rollup/plugin-commonjs')({