Skip to content

Commit 46a6777

Browse files
authored
refactor: runtime deprecate optimizeDeps.rollupOptions (#507)
1 parent 8e32f61 commit 46a6777

File tree

6 files changed

+98
-66
lines changed

6 files changed

+98
-66
lines changed

packages/vite/src/node/build.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,7 @@ export function resolveBuildEnvironmentOptions(
448448
} satisfies BuildEnvironmentOptions,
449449
raw,
450450
)
451-
setupRollupOptionCompat(merged)
451+
setupRollupOptionCompat(merged, 'build')
452452
merged.rolldownOptions = {
453453
platform: consumer === 'server' ? 'node' : 'browser',
454454
...merged.rolldownOptions,

packages/vite/src/node/config.ts

Lines changed: 45 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -798,7 +798,7 @@ const configDefaults = Object.freeze({
798798
exclude: [],
799799
needsInterop: [],
800800
// esbuildOptions
801-
rollupOptions: {},
801+
rolldownOptions: {},
802802
/** @experimental */
803803
extensions: [],
804804
/** @deprecated @experimental */
@@ -1094,6 +1094,12 @@ function resolveDepOptimizationOptions(
10941094
consumer: 'client' | 'server' | undefined,
10951095
logger: Logger,
10961096
): DepOptimizationOptions {
1097+
if (
1098+
optimizeDeps?.rolldownOptions &&
1099+
optimizeDeps?.rolldownOptions === optimizeDeps?.rollupOptions
1100+
) {
1101+
delete optimizeDeps?.rollupOptions
1102+
}
10971103
const merged = mergeWithDefaults(
10981104
{
10991105
...configDefaults.optimizeDeps,
@@ -1103,10 +1109,10 @@ function resolveDepOptimizationOptions(
11031109
},
11041110
optimizeDeps ?? {},
11051111
)
1106-
setupRollupOptionCompat(merged)
1112+
setupRollupOptionCompat(merged, 'optimizeDeps')
11071113

1108-
const rollupOptions = merged.rollupOptions as Exclude<
1109-
DepOptimizationOptions['rollupOptions'],
1114+
const rolldownOptions = merged.rolldownOptions as Exclude<
1115+
DepOptimizationOptions['rolldownOptions'],
11101116
undefined
11111117
>
11121118

@@ -1116,80 +1122,80 @@ function resolveDepOptimizationOptions(
11161122
`You or a plugin you are using have set \`optimizeDeps.esbuildOptions\` ` +
11171123
`but this option is now deprecated. ` +
11181124
`Vite now uses Rolldown to optimize the dependencies. ` +
1119-
`Please use \`optimizeDeps.rollupOptions\` instead.`,
1125+
`Please use \`optimizeDeps.rolldownOptions\` instead.`,
11201126
),
11211127
)
11221128

1123-
rollupOptions.resolve ??= {}
1124-
rollupOptions.output ??= {}
1125-
rollupOptions.transform ??= {}
1129+
rolldownOptions.resolve ??= {}
1130+
rolldownOptions.output ??= {}
1131+
rolldownOptions.transform ??= {}
11261132

11271133
const setResolveOptions = <
11281134
T extends keyof Exclude<RolldownOptions['resolve'], undefined>,
11291135
>(
11301136
key: T,
11311137
value: Exclude<RolldownOptions['resolve'], undefined>[T],
11321138
) => {
1133-
if (value !== undefined && rollupOptions.resolve![key] === undefined) {
1134-
rollupOptions.resolve![key] = value
1139+
if (value !== undefined && rolldownOptions.resolve![key] === undefined) {
1140+
rolldownOptions.resolve![key] = value
11351141
}
11361142
}
11371143

11381144
if (
11391145
merged.esbuildOptions.minify !== undefined &&
1140-
rollupOptions.output.minify === undefined
1146+
rolldownOptions.output.minify === undefined
11411147
) {
1142-
rollupOptions.output.minify = merged.esbuildOptions.minify
1148+
rolldownOptions.output.minify = merged.esbuildOptions.minify
11431149
}
11441150
if (
11451151
merged.esbuildOptions.treeShaking !== undefined &&
1146-
rollupOptions.treeshake === undefined
1152+
rolldownOptions.treeshake === undefined
11471153
) {
1148-
rollupOptions.treeshake = merged.esbuildOptions.treeShaking
1154+
rolldownOptions.treeshake = merged.esbuildOptions.treeShaking
11491155
}
11501156
if (
11511157
merged.esbuildOptions.define !== undefined &&
1152-
rollupOptions.transform.define === undefined
1158+
rolldownOptions.transform.define === undefined
11531159
) {
1154-
rollupOptions.transform.define = merged.esbuildOptions.define
1160+
rolldownOptions.transform.define = merged.esbuildOptions.define
11551161
}
11561162
if (merged.esbuildOptions.loader !== undefined) {
11571163
const loader = merged.esbuildOptions.loader
1158-
rollupOptions.moduleTypes ??= {}
1164+
rolldownOptions.moduleTypes ??= {}
11591165
for (const [key, value] of Object.entries(loader)) {
11601166
if (
1161-
rollupOptions.moduleTypes[key] === undefined &&
1167+
rolldownOptions.moduleTypes[key] === undefined &&
11621168
value !== 'copy' &&
11631169
value !== 'css' &&
11641170
value !== 'default' &&
11651171
value !== 'file' &&
11661172
value !== 'local-css'
11671173
) {
1168-
rollupOptions.moduleTypes[key] = value
1174+
rolldownOptions.moduleTypes[key] = value
11691175
}
11701176
}
11711177
}
11721178
if (
11731179
merged.esbuildOptions.preserveSymlinks !== undefined &&
1174-
rollupOptions.resolve.symlinks === undefined
1180+
rolldownOptions.resolve.symlinks === undefined
11751181
) {
1176-
rollupOptions.resolve.symlinks = !merged.esbuildOptions.preserveSymlinks
1182+
rolldownOptions.resolve.symlinks = !merged.esbuildOptions.preserveSymlinks
11771183
}
11781184
setResolveOptions('extensions', merged.esbuildOptions.resolveExtensions)
11791185
setResolveOptions('mainFields', merged.esbuildOptions.mainFields)
11801186
setResolveOptions('conditionNames', merged.esbuildOptions.conditions)
11811187
if (
11821188
merged.esbuildOptions.keepNames !== undefined &&
1183-
rollupOptions.output.keepNames === undefined
1189+
rolldownOptions.output.keepNames === undefined
11841190
) {
1185-
rollupOptions.output.keepNames = merged.esbuildOptions.keepNames
1191+
rolldownOptions.output.keepNames = merged.esbuildOptions.keepNames
11861192
}
11871193

11881194
if (
11891195
merged.esbuildOptions.platform !== undefined &&
1190-
rollupOptions.platform === undefined
1196+
rolldownOptions.platform === undefined
11911197
) {
1192-
rollupOptions.platform = merged.esbuildOptions.platform
1198+
rolldownOptions.platform = merged.esbuildOptions.platform
11931199
}
11941200

11951201
// NOTE: the following options cannot be converted
@@ -1232,20 +1238,20 @@ function resolveDepOptimizationOptions(
12321238
merged.esbuildOptions ??= {}
12331239
merged.esbuildOptions.preserveSymlinks ??= preserveSymlinks
12341240

1235-
rollupOptions.resolve ??= {}
1236-
rollupOptions.resolve.symlinks ??= !preserveSymlinks
1237-
rollupOptions.output ??= {}
1238-
rollupOptions.output.topLevelVar ??= true
1241+
rolldownOptions.resolve ??= {}
1242+
rolldownOptions.resolve.symlinks ??= !preserveSymlinks
1243+
rolldownOptions.output ??= {}
1244+
rolldownOptions.output.topLevelVar ??= true
12391245

12401246
return merged
12411247
}
12421248

12431249
async function setOptimizeDepsPluginNames(resolvedConfig: ResolvedConfig) {
12441250
await Promise.all(
12451251
Object.values(resolvedConfig.environments).map(async (environment) => {
1246-
const plugins = environment.optimizeDeps.rollupOptions?.plugins ?? []
1252+
const plugins = environment.optimizeDeps.rolldownOptions?.plugins ?? []
12471253
const outputPlugins =
1248-
environment.optimizeDeps.rollupOptions?.output?.plugins ?? []
1254+
environment.optimizeDeps.rolldownOptions?.output?.plugins ?? []
12491255
const flattenedPlugins = await asyncFlatten([plugins, outputPlugins])
12501256

12511257
const pluginNames = []
@@ -1264,9 +1270,9 @@ function applyDepOptimizationOptionCompat(resolvedConfig: ResolvedConfig) {
12641270
resolvedConfig.optimizeDeps.esbuildOptions?.plugins &&
12651271
resolvedConfig.optimizeDeps.esbuildOptions.plugins.length > 0
12661272
) {
1267-
resolvedConfig.optimizeDeps.rollupOptions ??= {}
1268-
resolvedConfig.optimizeDeps.rollupOptions.plugins ||= []
1269-
;(resolvedConfig.optimizeDeps.rollupOptions.plugins as any[]).push(
1273+
resolvedConfig.optimizeDeps.rolldownOptions ??= {}
1274+
resolvedConfig.optimizeDeps.rolldownOptions.plugins ||= []
1275+
;(resolvedConfig.optimizeDeps.rolldownOptions.plugins as any[]).push(
12701276
...resolvedConfig.optimizeDeps.esbuildOptions.plugins.map((plugin) =>
12711277
convertEsbuildPluginToRolldownPlugin(plugin),
12721278
),
@@ -1296,14 +1302,14 @@ export async function resolveConfig(
12961302
): Promise<ResolvedConfig> {
12971303
let config = inlineConfig
12981304
config.build ??= {}
1299-
setupRollupOptionCompat(config.build)
1305+
setupRollupOptionCompat(config.build, 'build')
13001306
config.worker ??= {}
1301-
setupRollupOptionCompat(config.worker)
1307+
setupRollupOptionCompat(config.worker, 'worker')
13021308
config.optimizeDeps ??= {}
1303-
setupRollupOptionCompat(config.optimizeDeps)
1309+
setupRollupOptionCompat(config.optimizeDeps, 'optimizeDeps')
13041310
if (config.ssr) {
13051311
config.ssr.optimizeDeps ??= {}
1306-
setupRollupOptionCompat(config.ssr.optimizeDeps)
1312+
setupRollupOptionCompat(config.ssr.optimizeDeps, 'ssr.optimizeDeps')
13071313
}
13081314

13091315
let configFileDependencies: string[] = []
@@ -1735,7 +1741,7 @@ export async function resolveConfig(
17351741
rollupOptions: config.worker?.rollupOptions || {},
17361742
rolldownOptions: config.worker?.rolldownOptions, // will be set by setupRollupOptionCompat if undefined
17371743
}
1738-
setupRollupOptionCompat(resolvedWorkerOptions)
1744+
setupRollupOptionCompat(resolvedWorkerOptions, 'worker')
17391745

17401746
const base = withTrailingSlash(resolvedBase)
17411747

packages/vite/src/node/optimizer/index.ts

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -760,8 +760,8 @@ async function prepareRolldownOptimizerRun(
760760

761761
const { optimizeDeps } = environment.config
762762

763-
const { plugins: pluginsFromConfig = [], ...rollupOptions } =
764-
optimizeDeps.rollupOptions ?? {}
763+
const { plugins: pluginsFromConfig = [], ...rolldownOptions } =
764+
optimizeDeps.rolldownOptions ?? {}
765765

766766
let jsxLoader = false
767767
await Promise.all(
@@ -788,11 +788,11 @@ async function prepareRolldownOptimizerRun(
788788
// as esbuild will replace it automatically when `platform` is `'browser'`
789789
'process.env.NODE_ENV'
790790
: JSON.stringify(process.env.NODE_ENV || environment.config.mode),
791-
...rollupOptions.transform?.define,
791+
...rolldownOptions.transform?.define,
792792
}
793793

794794
const platform =
795-
optimizeDeps.rollupOptions?.platform ??
795+
optimizeDeps.rolldownOptions?.platform ??
796796
// We generally don't want to use platform 'neutral', as esbuild has custom handling
797797
// when the platform is 'node' or 'browser' that can't be emulated by using mainFields
798798
// and conditions
@@ -812,24 +812,24 @@ async function prepareRolldownOptimizerRun(
812812
let canceled = false
813813
async function build() {
814814
const bundle = await rolldown({
815-
...rollupOptions,
815+
...rolldownOptions,
816816
input: flatIdDeps,
817817
logLevel: 'silent',
818818
plugins,
819819
platform,
820820
transform: {
821-
...rollupOptions.transform,
821+
...rolldownOptions.transform,
822822
target: ESBUILD_BASELINE_WIDELY_AVAILABLE_TARGET,
823823
define,
824824
},
825825
resolve: {
826826
extensions: ['.tsx', '.ts', '.jsx', '.js', '.css', '.json'],
827-
...rollupOptions.resolve,
827+
...rolldownOptions.resolve,
828828
},
829829
// TODO: remove this and enable rolldown's CSS support later
830830
moduleTypes: {
831831
'.css': 'js',
832-
...rollupOptions.moduleTypes,
832+
...rolldownOptions.moduleTypes,
833833
...(jsxLoader ? { '.js': 'jsx' } : {}),
834834
},
835835
})
@@ -839,7 +839,7 @@ async function prepareRolldownOptimizerRun(
839839
}
840840
const result = await bundle.write({
841841
legalComments: 'none',
842-
...rollupOptions.output,
842+
...rolldownOptions.output,
843843
format: 'esm',
844844
sourcemap: true,
845845
dir: processingCacheDir,
@@ -1089,13 +1089,13 @@ export async function extractExportsData(
10891089

10901090
const { optimizeDeps } = environment.config
10911091

1092-
const rollupOptions = optimizeDeps.rollupOptions ?? {}
1092+
const rolldownOptions = optimizeDeps.rolldownOptions ?? {}
10931093
if (optimizeDeps.extensions?.some((ext) => filePath.endsWith(ext))) {
10941094
// For custom supported extensions, build the entry file to transform it into JS,
10951095
// and then parse with es-module-lexer. Note that the `bundle` option is not `true`,
10961096
// so only the entry file is being transformed.
1097-
const { plugins: pluginsFromConfig = [], ...remainingRollupOptions } =
1098-
rollupOptions
1097+
const { plugins: pluginsFromConfig = [], ...remainingRolldownOptions } =
1098+
rolldownOptions
10991099
const plugins = await asyncFlatten(arraify(pluginsFromConfig))
11001100
plugins.unshift({
11011101
name: 'externalize',
@@ -1106,17 +1106,17 @@ export async function extractExportsData(
11061106
},
11071107
})
11081108
const build = await rolldown({
1109-
...remainingRollupOptions,
1109+
...remainingRolldownOptions,
11101110
plugins,
11111111
input: [filePath],
11121112
// TODO: remove this and enable rolldown's CSS support later
11131113
moduleTypes: {
11141114
'.css': 'js',
1115-
...remainingRollupOptions.moduleTypes,
1115+
...remainingRolldownOptions.moduleTypes,
11161116
},
11171117
})
11181118
const result = await build.generate({
1119-
...rollupOptions.output,
1119+
...rolldownOptions.output,
11201120
format: 'esm',
11211121
sourcemap: false,
11221122
})
@@ -1134,7 +1134,7 @@ export async function extractExportsData(
11341134
try {
11351135
parseResult = parse(entryContent)
11361136
} catch {
1137-
const lang = rollupOptions.moduleTypes?.[path.extname(filePath)] || 'jsx'
1137+
const lang = rolldownOptions.moduleTypes?.[path.extname(filePath)] || 'jsx'
11381138
debug?.(
11391139
`Unable to parse: ${filePath}.\n Trying again with a ${lang} transform.`,
11401140
)
@@ -1274,14 +1274,14 @@ function getConfigHash(environment: Environment): string {
12741274
exclude: optimizeDeps.exclude
12751275
? unique(optimizeDeps.exclude).sort()
12761276
: undefined,
1277-
rollupOptions: {
1278-
...optimizeDeps.rollupOptions,
1277+
rolldownOptions: {
1278+
...optimizeDeps.rolldownOptions,
12791279
plugins: undefined, // included in optimizeDepsPluginNames
12801280
onLog: undefined,
12811281
onwarn: undefined,
12821282
checks: undefined,
12831283
output: {
1284-
...optimizeDeps.rollupOptions?.output,
1284+
...optimizeDeps.rolldownOptions?.output,
12851285
plugins: undefined, // included in optimizeDepsPluginNames
12861286
},
12871287
},

packages/vite/src/node/optimizer/scan.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -249,8 +249,8 @@ async function prepareRolldownScanner(
249249
deps: Record<string, string>,
250250
missing: Record<string, string>,
251251
): Promise<{ build: () => Promise<void> }> {
252-
const { plugins: pluginsFromConfig = [], ...rollupOptions } =
253-
environment.config.optimizeDeps.rollupOptions ?? {}
252+
const { plugins: pluginsFromConfig = [], ...rolldownOptions } =
253+
environment.config.optimizeDeps.rolldownOptions ?? {}
254254

255255
const plugins = await asyncFlatten(arraify(pluginsFromConfig))
256256

@@ -264,7 +264,7 @@ async function prepareRolldownScanner(
264264
const { tsconfig } = await loadTsconfigJsonForFile(
265265
path.join(environment.config.root, '_dummy.js'),
266266
)
267-
const transformOptions = deepClone(rollupOptions.transform) ?? {}
267+
const transformOptions = deepClone(rolldownOptions.transform) ?? {}
268268
setOxcTransformOptionsFromTsconfigOptions(
269269
transformOptions,
270270
tsconfig.compilerOptions,
@@ -276,7 +276,7 @@ async function prepareRolldownScanner(
276276

277277
async function build() {
278278
await scan({
279-
...rollupOptions,
279+
...rolldownOptions,
280280
transform: transformOptions,
281281
input: entries,
282282
logLevel: 'silent',

0 commit comments

Comments
 (0)