diff --git a/packages/vite/src/node/__tests__/plugins/define.spec.ts b/packages/vite/src/node/__tests__/plugins/define.spec.ts index b85ccaf70575c0..449383530dcda7 100644 --- a/packages/vite/src/node/__tests__/plugins/define.spec.ts +++ b/packages/vite/src/node/__tests__/plugins/define.spec.ts @@ -39,4 +39,19 @@ describe('definePlugin', () => { 'const isSSR = false;', ) }) + + test('preserve import.meta.hot with override', async () => { + // assert that the default behavior is to replace import.meta.hot with false + const transform = await createDefinePluginTransform() + expect(await transform('const isHot = import.meta.hot;')).toBe( + 'const isHot = false;', + ) + // assert that we can specify a user define to preserve import.meta.hot + const overrideTransform = await createDefinePluginTransform({ + 'import.meta.hot': 'import.meta.hot', + }) + expect(await overrideTransform('const isHot = import.meta.hot;')).toBe( + 'const isHot = import.meta.hot;', + ) + }) }) diff --git a/packages/vite/src/node/plugins/define.ts b/packages/vite/src/node/plugins/define.ts index ac7ab8dfa3a194..4a1b83e5390aa6 100644 --- a/packages/vite/src/node/plugins/define.ts +++ b/packages/vite/src/node/plugins/define.ts @@ -45,13 +45,14 @@ export function definePlugin(config: ResolvedConfig): Plugin { ...config.env, SSR: !!config.build.ssr, } + // set here to allow override with config.define + importMetaKeys['import.meta.hot'] = `false` for (const key in env) { importMetaKeys[`import.meta.env.${key}`] = JSON.stringify(env[key]) } Object.assign(importMetaFallbackKeys, { 'import.meta.env.': `({}).`, 'import.meta.env': JSON.stringify(config.env), - 'import.meta.hot': `false`, }) }