Skip to content

Commit 42fd11c

Browse files
authored
fix(plugin-legacy): dynamic import browserslist-to-esbuild (#16011)
1 parent 57463fc commit 42fd11c

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

packages/plugin-legacy/src/index.ts

+11-5
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import type {
2424
} from '@babel/core'
2525
import colors from 'picocolors'
2626
import browserslist from 'browserslist'
27-
import browserslistToEsbuild from 'browserslist-to-esbuild'
2827
import type { Options } from './types'
2928
import {
3029
detectModernBrowserCode,
@@ -189,7 +188,7 @@ function viteLegacyPlugin(options: Options = {}): Plugin[] {
189188
const legacyConfigPlugin: Plugin = {
190189
name: 'vite:legacy-config',
191190

192-
config(config, env) {
191+
async config(config, env) {
193192
if (env.command === 'build' && !config.build?.ssr) {
194193
if (!config.build) {
195194
config.build = {}
@@ -209,9 +208,16 @@ function viteLegacyPlugin(options: Options = {}): Plugin[] {
209208
// See https://github.com/vitejs/vite/pull/10052#issuecomment-1242076461
210209
overriddenBuildTarget = config.build.target !== undefined
211210
overriddenDefaultModernTargets = options.modernTargets !== undefined
212-
config.build.target = options.modernTargets
213-
? browserslistToEsbuild(options.modernTargets)
214-
: modernTargetsEsbuild
211+
212+
if (options.modernTargets) {
213+
// Package is ESM only
214+
const { default: browserslistToEsbuild } = await import(
215+
'browserslist-to-esbuild'
216+
)
217+
config.build.target = browserslistToEsbuild(options.modernTargets)
218+
} else {
219+
config.build.target = modernTargetsEsbuild
220+
}
215221
}
216222
}
217223

0 commit comments

Comments
 (0)