From 2306dad255bcfc932f9c97b1495a19bf9dc1ae71 Mon Sep 17 00:00:00 2001 From: patak-dev Date: Mon, 17 Jan 2022 21:44:33 +0100 Subject: [PATCH] fix: account for rollupOptions.output array --- .../vite/src/node/plugins/splitVendorChunk.ts | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/packages/vite/src/node/plugins/splitVendorChunk.ts b/packages/vite/src/node/plugins/splitVendorChunk.ts index b4125717737efa..14c088bb546da2 100644 --- a/packages/vite/src/node/plugins/splitVendorChunk.ts +++ b/packages/vite/src/node/plugins/splitVendorChunk.ts @@ -1,3 +1,4 @@ +import type { UserConfig } from '../../node' import type { Plugin } from '../plugin' import type { OutputOptions, GetManualChunk, GetModuleInfo } from 'rollup' import { isCSSRequest } from './css' @@ -72,24 +73,37 @@ function staticImportedByEntry( } export function splitVendorChunkPlugin(): Plugin { - const cache = new SplitVendorChunkCache() + const caches: SplitVendorChunkCache[] = [] + function createSplitVendorChunk(output: OutputOptions, config: UserConfig) { + const cache = new SplitVendorChunkCache() + caches.push(cache) + const build = config.build ?? {} + const format = output?.format + if (!build.ssr && !build.lib && format !== 'umd' && format !== 'iife') { + return splitVendorChunk({ cache }) + } + } return { name: 'vite:split-vendor-chunk', config(config) { - const build = config.build ?? {} - const format = (build.rollupOptions?.output as OutputOptions)?.format - if (!build.ssr && !build.lib && format !== 'umd' && format !== 'iife') { + let outputs = config?.build?.rollupOptions?.output + if (outputs) { + outputs = Array.isArray(outputs) ? outputs : [outputs] + for (const output of outputs) { + output.manualChunks = createSplitVendorChunk(output, config) + } + } else { return { build: { rollupOptions: { - manualChunks: splitVendorChunk({ cache }) + manualChunks: createSplitVendorChunk({}, config) } } } } }, buildStart() { - cache.reset() + caches.forEach((cache) => cache.reset()) } } }