From f097aa10c17faf0b73b239a34ca72934d38188d7 Mon Sep 17 00:00:00 2001 From: Evan You Date: Fri, 23 Jul 2021 11:27:04 -0400 Subject: [PATCH] fix: provide build load fallback for arbitrary request with queries --- packages/vite/src/node/build.ts | 4 +++- packages/vite/src/node/plugins/css.ts | 2 +- packages/vite/src/node/plugins/loadFallback.ts | 16 ++++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 packages/vite/src/node/plugins/loadFallback.ts diff --git a/packages/vite/src/node/build.ts b/packages/vite/src/node/build.ts index f19192c0bc0404..f56e81a29eddb0 100644 --- a/packages/vite/src/node/build.ts +++ b/packages/vite/src/node/build.ts @@ -40,6 +40,7 @@ import { isCSSRequest } from './plugins/css' import { DepOptimizationMetadata } from './optimizer' import { scanImports } from './optimizer/scan' import { assetImportMetaUrlPlugin } from './plugins/assetImportMetaUrl' +import { loadFallbackPlugin } from './plugins/loadFallback' export interface BuildOptions { /** @@ -289,7 +290,8 @@ export function resolveBuildPlugins(config: ResolvedConfig): { : []), ...(options.manifest ? [manifestPlugin(config)] : []), ...(options.ssrManifest ? [ssrManifestPlugin(config)] : []), - buildReporterPlugin(config) + buildReporterPlugin(config), + loadFallbackPlugin() ] } } diff --git a/packages/vite/src/node/plugins/css.ts b/packages/vite/src/node/plugins/css.ts index 90397083a6ecb9..51d292719af9dc 100644 --- a/packages/vite/src/node/plugins/css.ts +++ b/packages/vite/src/node/plugins/css.ts @@ -306,7 +306,7 @@ export function cssPostPlugin(config: ResolvedConfig): Plugin { map: { mappings: '' }, // avoid the css module from being tree-shaken so that we can retrieve // it in renderChunk() - moduleSideEffects: 'no-treeshake' + moduleSideEffects: inlined ? false : 'no-treeshake' } }, diff --git a/packages/vite/src/node/plugins/loadFallback.ts b/packages/vite/src/node/plugins/loadFallback.ts new file mode 100644 index 00000000000000..625b3ee80eadbc --- /dev/null +++ b/packages/vite/src/node/plugins/loadFallback.ts @@ -0,0 +1,16 @@ +import { promises as fs } from 'fs' +import { Plugin } from '..' +import { cleanUrl } from '../utils' + +export function loadFallbackPlugin(): Plugin { + return { + name: 'load-fallback', + async load(id) { + try { + return fs.readFile(cleanUrl(id), 'utf-8') + } catch (e) { + return fs.readFile(id, 'utf-8') + } + } + } +}