Skip to content

Commit 9ebe4a5

Browse files
authored
fix: merge old and new noExternal: true correctly (vitejs#20502)
1 parent fc9a9d3 commit 9ebe4a5

File tree

2 files changed

+49
-8
lines changed

2 files changed

+49
-8
lines changed

packages/vite/src/node/__tests__/config.spec.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,42 @@ describe('mergeConfig', () => {
225225
expect(mergeConfig(newConfig, baseConfig)).toEqual(mergedConfig)
226226
})
227227

228+
test('merge ssr.noExternal and environments.ssr.resolve.noExternal', async () => {
229+
const oldTrue = await resolveConfig(
230+
{
231+
ssr: {
232+
noExternal: true,
233+
},
234+
environments: {
235+
ssr: {
236+
resolve: {
237+
noExternal: ['dep'],
238+
},
239+
},
240+
},
241+
},
242+
'serve',
243+
)
244+
expect(oldTrue.environments.ssr.resolve.noExternal).toEqual(true)
245+
246+
const newTrue = await resolveConfig(
247+
{
248+
ssr: {
249+
noExternal: ['dep'],
250+
},
251+
environments: {
252+
ssr: {
253+
resolve: {
254+
noExternal: true,
255+
},
256+
},
257+
},
258+
},
259+
'serve',
260+
)
261+
expect(newTrue.environments.ssr.resolve.noExternal).toEqual(true)
262+
})
263+
228264
test('handles server.hmr.server', () => {
229265
const httpServer = http.createServer()
230266

packages/vite/src/node/config.ts

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1175,16 +1175,21 @@ export async function resolveConfig(
11751175
configEnvironmentsSsr.optimizeDeps ?? {},
11761176
)
11771177

1178+
// merge with `resolve` as the root to merge `noExternal` correctly
11781179
configEnvironmentsSsr.resolve = mergeConfig(
11791180
{
1180-
conditions: config.ssr?.resolve?.conditions,
1181-
externalConditions: config.ssr?.resolve?.externalConditions,
1182-
mainFields: config.ssr?.resolve?.mainFields,
1183-
external: config.ssr?.external,
1184-
noExternal: config.ssr?.noExternal,
1185-
} satisfies EnvironmentResolveOptions,
1186-
configEnvironmentsSsr.resolve ?? {},
1187-
)
1181+
resolve: {
1182+
conditions: config.ssr?.resolve?.conditions,
1183+
externalConditions: config.ssr?.resolve?.externalConditions,
1184+
mainFields: config.ssr?.resolve?.mainFields,
1185+
external: config.ssr?.external,
1186+
noExternal: config.ssr?.noExternal,
1187+
},
1188+
} satisfies EnvironmentOptions,
1189+
{
1190+
resolve: configEnvironmentsSsr.resolve ?? {},
1191+
},
1192+
).resolve
11881193
}
11891194

11901195
if (config.build?.ssrEmitAssets !== undefined) {

0 commit comments

Comments
 (0)