From 128f09eb0100e80f566e33ca8c55bcd0896d4e38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BF=A0=20/=20green?= Date: Fri, 27 Jan 2023 21:30:52 +0900 Subject: [PATCH] fix: make viteMetadata property of RenderedChunk optional (#11768) --- packages/vite/src/node/plugins/asset.ts | 2 +- packages/vite/src/node/plugins/css.ts | 11 +++++------ packages/vite/src/node/plugins/html.ts | 2 +- packages/vite/src/node/plugins/importAnalysisBuild.ts | 6 +++--- packages/vite/src/node/plugins/manifest.ts | 4 ++-- packages/vite/src/node/ssr/ssrManifestPlugin.ts | 6 +++--- packages/vite/types/metadata.d.ts | 2 +- 7 files changed, 16 insertions(+), 17 deletions(-) diff --git a/packages/vite/src/node/plugins/asset.ts b/packages/vite/src/node/plugins/asset.ts index dd73a9e1cd23f5..134625c87dd078 100644 --- a/packages/vite/src/node/plugins/asset.ts +++ b/packages/vite/src/node/plugins/asset.ts @@ -78,7 +78,7 @@ export function renderAssetUrlInJS( s ||= new MagicString(code) const [full, referenceId, postfix = ''] = match const file = ctx.getFileName(referenceId) - chunk.viteMetadata.importedAssets.add(cleanUrl(file)) + chunk.viteMetadata!.importedAssets.add(cleanUrl(file)) const filename = file + postfix const replacement = toOutputFilePathInJS( filename, diff --git a/packages/vite/src/node/plugins/css.ts b/packages/vite/src/node/plugins/css.ts index 142a696662f5e3..72ac5821348f9e 100644 --- a/packages/vite/src/node/plugins/css.ts +++ b/packages/vite/src/node/plugins/css.ts @@ -506,7 +506,7 @@ export function cssPostPlugin(config: ResolvedConfig): Plugin { // replace asset url references with resolved url. chunkCSS = chunkCSS.replace(assetUrlRE, (_, fileHash, postfix = '') => { const filename = this.getFileName(fileHash) + postfix - chunk.viteMetadata.importedAssets.add(cleanUrl(filename)) + chunk.viteMetadata!.importedAssets.add(cleanUrl(filename)) return toOutputFilePathInCss( filename, 'asset', @@ -570,7 +570,7 @@ export function cssPostPlugin(config: ResolvedConfig): Plugin { generatedAssets .get(config)! .set(referenceId, { originalName, isEntry }) - chunk.viteMetadata.importedCss.add(this.getFileName(referenceId)) + chunk.viteMetadata!.importedCss.add(this.getFileName(referenceId)) } else if (!config.build.ssr) { // legacy build and inline css @@ -675,11 +675,10 @@ export function cssPostPlugin(config: ResolvedConfig): Plugin { // chunks instead. chunk.imports = chunk.imports.filter((file) => { if (pureCssChunkNames.includes(file)) { - const { - viteMetadata: { importedCss }, - } = bundle[file] as OutputChunk + const { importedCss } = (bundle[file] as OutputChunk) + .viteMetadata! importedCss.forEach((file) => - chunk.viteMetadata.importedCss.add(file), + chunk.viteMetadata!.importedCss.add(file), ) return false } diff --git a/packages/vite/src/node/plugins/html.ts b/packages/vite/src/node/plugins/html.ts index e85cef2fe32070..e8609cbf652d77 100644 --- a/packages/vite/src/node/plugins/html.ts +++ b/packages/vite/src/node/plugins/html.ts @@ -658,7 +658,7 @@ export function buildHtmlPlugin(config: ResolvedConfig): Plugin { }) } - chunk.viteMetadata.importedCss.forEach((file) => { + chunk.viteMetadata!.importedCss.forEach((file) => { if (!seen.has(file)) { seen.add(file) tags.push({ diff --git a/packages/vite/src/node/plugins/importAnalysisBuild.ts b/packages/vite/src/node/plugins/importAnalysisBuild.ts index 0ae2001b91b886..8b63dcf731eb9b 100644 --- a/packages/vite/src/node/plugins/importAnalysisBuild.ts +++ b/packages/vite/src/node/plugins/importAnalysisBuild.ts @@ -475,7 +475,7 @@ export function buildImportAnalysisPlugin(config: ResolvedConfig): Plugin { chunk.imports.forEach(addDeps) // Ensure that the css imported by current chunk is loaded after the dependencies. // So the style of current chunk won't be overwritten unexpectedly. - chunk.viteMetadata.importedCss.forEach((file) => { + chunk.viteMetadata!.importedCss.forEach((file) => { deps.add(file) }) } else { @@ -483,8 +483,8 @@ export function buildImportAnalysisPlugin(config: ResolvedConfig): Plugin { removedPureCssFilesCache.get(config)! const chunk = removedPureCssFiles.get(filename) if (chunk) { - if (chunk.viteMetadata.importedCss.size) { - chunk.viteMetadata.importedCss.forEach((file) => { + if (chunk.viteMetadata!.importedCss.size) { + chunk.viteMetadata!.importedCss.forEach((file) => { deps.add(file) }) hasRemovedPureCssChunk = true diff --git a/packages/vite/src/node/plugins/manifest.ts b/packages/vite/src/node/plugins/manifest.ts index 2f49f5e7cc96eb..0950121c0bcbe2 100644 --- a/packages/vite/src/node/plugins/manifest.ts +++ b/packages/vite/src/node/plugins/manifest.ts @@ -92,10 +92,10 @@ export function manifestPlugin(config: ResolvedConfig): Plugin { } } - if (chunk.viteMetadata.importedCss.size) { + if (chunk.viteMetadata?.importedCss.size) { manifestChunk.css = [...chunk.viteMetadata.importedCss] } - if (chunk.viteMetadata.importedAssets.size) { + if (chunk.viteMetadata?.importedAssets.size) { manifestChunk.assets = [...chunk.viteMetadata.importedAssets] } diff --git a/packages/vite/src/node/ssr/ssrManifestPlugin.ts b/packages/vite/src/node/ssr/ssrManifestPlugin.ts index a40543dd47541f..8cebed9248cfc4 100644 --- a/packages/vite/src/node/ssr/ssrManifestPlugin.ts +++ b/packages/vite/src/node/ssr/ssrManifestPlugin.ts @@ -27,11 +27,11 @@ export function ssrManifestPlugin(config: ResolvedConfig): Plugin { mappedChunks.push(joinUrlSegments(base, chunk.fileName)) // tags for entry chunks are already generated in static HTML, // so we only need to record info for non-entry chunks. - chunk.viteMetadata.importedCss.forEach((file) => { + chunk.viteMetadata!.importedCss.forEach((file) => { mappedChunks.push(joinUrlSegments(base, file)) }) } - chunk.viteMetadata.importedAssets.forEach((file) => { + chunk.viteMetadata!.importedAssets.forEach((file) => { mappedChunks.push(joinUrlSegments(base, file)) }) } @@ -59,7 +59,7 @@ export function ssrManifestPlugin(config: ResolvedConfig): Plugin { analyzed.add(filename) const chunk = bundle[filename] as OutputChunk | undefined if (chunk) { - chunk.viteMetadata.importedCss.forEach((file) => { + chunk.viteMetadata!.importedCss.forEach((file) => { deps.push(joinUrlSegments(base, file)) // TODO:base }) chunk.imports.forEach(addDeps) diff --git a/packages/vite/types/metadata.d.ts b/packages/vite/types/metadata.d.ts index facb4fc4df70ae..d6925c5a6f2f93 100644 --- a/packages/vite/types/metadata.d.ts +++ b/packages/vite/types/metadata.d.ts @@ -5,6 +5,6 @@ export interface ChunkMetadata { declare module 'rollup' { export interface RenderedChunk { - viteMetadata: ChunkMetadata + viteMetadata?: ChunkMetadata } }