Skip to content

Commit eef5fa2

Browse files
committed
fix: mutate rollupOptions.input later ensureEnvironmentImportsEntryFallback
1 parent 74769a1 commit eef5fa2

File tree

2 files changed

+22
-23
lines changed

2 files changed

+22
-23
lines changed

packages/plugin-rsc/src/plugin.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import vitePluginRscCore from './core/plugin'
2828
import { cjsModuleRunnerPlugin } from './plugins/cjs'
2929
import { vitePluginFindSourceMapURL } from './plugins/find-source-map-url'
3030
import {
31+
ensureEnvironmentImportsEntryFallback,
3132
vitePluginImportEnvironment,
3233
writeEnvironmentImportsManifest,
3334
type EnvironmentImportMeta,
@@ -408,6 +409,7 @@ export default function vitePluginRsc(
408409
)
409410

410411
// rsc -> ssr -> rsc -> client -> ssr
412+
ensureEnvironmentImportsEntryFallback(builder.config)
411413
manager.isScanBuild = true
412414
builder.environments.rsc!.config.build.write = false
413415
builder.environments.ssr!.config.build.write = false

packages/plugin-rsc/src/plugins/import-environment.ts

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import fs from 'node:fs'
33
import path from 'node:path'
44
import MagicString from 'magic-string'
55
import { stripLiteral } from 'strip-literal'
6-
import type { Plugin } from 'vite'
6+
import type { Plugin, ResolvedConfig } from 'vite'
77
import type { RscPluginManager } from '../plugin'
88
import {
99
createVirtualPlugin,
@@ -24,34 +24,31 @@ export type EnvironmentImportMeta = {
2424
specifier: string
2525
}
2626

27+
// ensure at least one entry since otherwise rollup build fails
28+
export function ensureEnvironmentImportsEntryFallback({
29+
environments,
30+
}: ResolvedConfig): void {
31+
for (const [name, config] of Object.entries(environments)) {
32+
if (name === 'client') continue
33+
const input = normalizeRollupOpitonsInput(
34+
config.build?.rollupOptions?.input,
35+
)
36+
if (Object.keys(input).length === 0) {
37+
config.build = config.build || {}
38+
config.build.rollupOptions = config.build.rollupOptions || {}
39+
config.build.rollupOptions.input = {
40+
__vite_rsc_env_imports_entry_fallback: ENV_IMPORTS_ENTRY_FALLBACK,
41+
}
42+
}
43+
}
44+
}
45+
2746
export function vitePluginImportEnvironment(
2847
manager: RscPluginManager,
2948
): Plugin[] {
3049
return [
3150
{
3251
name: 'rsc:import-environment',
33-
configEnvironment: {
34-
order: 'post',
35-
handler(name, config, _env) {
36-
if (name === 'client') return
37-
// ensure at least one entry since otherwise rollup build fails
38-
const input = normalizeRollupOpitonsInput(
39-
config.build?.rollupOptions?.input,
40-
)
41-
if (Object.keys(input).length === 0) {
42-
return {
43-
build: {
44-
rollupOptions: {
45-
input: {
46-
__vite_rsc_env_imports_entry_fallback:
47-
ENV_IMPORTS_ENTRY_FALLBACK,
48-
},
49-
},
50-
},
51-
}
52-
}
53-
},
54-
},
5552
resolveId(source) {
5653
// Use placeholder as external, renderChunk will replace with correct relative path
5754
if (source === ENV_IMPORTS_MANIFEST_PLACEHOLDER) {

0 commit comments

Comments
 (0)