Skip to content

Commit daf4a25

Browse files
authored
fix: merge environments.*.resolve.noExternal properly (vitejs#20077)
1 parent b77402c commit daf4a25

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

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

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

192+
test('handles environments.*.resolve.noExternal', () => {
193+
const baseConfig = {
194+
environments: {
195+
ssr: {
196+
resolve: {
197+
noExternal: true,
198+
},
199+
},
200+
},
201+
}
202+
203+
const newConfig = {
204+
environments: {
205+
ssr: {
206+
resolve: {
207+
noExternal: ['foo'],
208+
},
209+
},
210+
},
211+
}
212+
213+
const mergedConfig = {
214+
environments: {
215+
ssr: {
216+
resolve: {
217+
noExternal: true,
218+
},
219+
},
220+
},
221+
}
222+
223+
// merging either ways, `resolve.noExternal: true` should take highest priority
224+
expect(mergeConfig(baseConfig, newConfig)).toEqual(mergedConfig)
225+
expect(mergeConfig(newConfig, baseConfig)).toEqual(mergedConfig)
226+
})
227+
192228
test('handles server.hmr.server', () => {
193229
const httpServer = http.createServer()
194230

packages/vite/src/node/utils.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1211,6 +1211,8 @@ function mergeWithDefaultsRecursively<
12111211
return merged as MergeWithDefaultsResult<D, V>
12121212
}
12131213

1214+
const environmentPathRE = /^environments\.[^.]+$/
1215+
12141216
export function mergeWithDefaults<
12151217
D extends Record<string, any>,
12161218
V extends Record<string, any>,
@@ -1272,7 +1274,10 @@ function mergeConfigRecursively(
12721274
merged[key] = mergeConfigRecursively(
12731275
existing,
12741276
value,
1275-
rootPath ? `${rootPath}.${key}` : key,
1277+
// treat environment.* as root
1278+
rootPath && !environmentPathRE.test(rootPath)
1279+
? `${rootPath}.${key}`
1280+
: key,
12761281
)
12771282
continue
12781283
}

0 commit comments

Comments
 (0)