@@ -598,6 +598,7 @@ export function resolveDevEnvironmentOptions(
598
598
preserverSymlinks : boolean ,
599
599
environmentName : string | undefined ,
600
600
consumer : 'client' | 'server' | undefined ,
601
+ logger : Logger ,
601
602
// Backward compatibility
602
603
skipSsrTransform ?: boolean ,
603
604
) : ResolvedDevEnvironmentOptions {
@@ -613,6 +614,7 @@ export function resolveDevEnvironmentOptions(
613
614
dev ?. optimizeDeps ,
614
615
preserverSymlinks ,
615
616
consumer ,
617
+ logger ,
616
618
) ,
617
619
createEnvironment :
618
620
dev ?. createEnvironment ??
@@ -658,6 +660,7 @@ function resolveEnvironmentOptions(
658
660
resolve . preserveSymlinks ,
659
661
environmentName ,
660
662
consumer ,
663
+ logger ,
661
664
skipSsrTransform ,
662
665
) ,
663
666
build : resolveBuildEnvironmentOptions (
@@ -793,8 +796,120 @@ function resolveDepOptimizationOptions(
793
796
optimizeDeps : DepOptimizationOptions | undefined ,
794
797
preserveSymlinks : boolean ,
795
798
consumer : 'client' | 'server' | undefined ,
799
+ logger : Logger ,
796
800
) : DepOptimizationOptions {
797
801
optimizeDeps ??= { }
802
+
803
+ if ( optimizeDeps . esbuildOptions ) {
804
+ logger . warn (
805
+ colors . yellow (
806
+ `You have set \`optimizeDeps.esbuildOptions\` but this options is now deprecated. ` +
807
+ `Vite now uses Rolldown to optimize the dependencies. ` +
808
+ `Please use \`optimizeDeps.rollupOptions\` instead.` ,
809
+ ) ,
810
+ )
811
+
812
+ optimizeDeps . rollupOptions ??= { }
813
+ optimizeDeps . rollupOptions . resolve ??= { }
814
+ optimizeDeps . rollupOptions . output ??= { }
815
+
816
+ const setResolveOptions = <
817
+ T extends keyof Exclude < RollupOptions [ 'resolve' ] , undefined > ,
818
+ > (
819
+ key : T ,
820
+ value : Exclude < RollupOptions [ 'resolve' ] , undefined > [ T ] ,
821
+ ) => {
822
+ if (
823
+ value !== undefined &&
824
+ optimizeDeps . rollupOptions ! . resolve ! [ key ] === undefined
825
+ ) {
826
+ optimizeDeps . rollupOptions ! . resolve ! [ key ] = value
827
+ }
828
+ }
829
+
830
+ if (
831
+ optimizeDeps . esbuildOptions . minify !== undefined &&
832
+ optimizeDeps . rollupOptions . output . minify === undefined
833
+ ) {
834
+ optimizeDeps . rollupOptions . output . minify =
835
+ optimizeDeps . esbuildOptions . minify
836
+ }
837
+ if (
838
+ optimizeDeps . esbuildOptions . treeShaking !== undefined &&
839
+ optimizeDeps . rollupOptions . treeshake === undefined
840
+ ) {
841
+ optimizeDeps . rollupOptions . treeshake =
842
+ optimizeDeps . esbuildOptions . treeShaking
843
+ }
844
+ if (
845
+ optimizeDeps . esbuildOptions . define !== undefined &&
846
+ optimizeDeps . rollupOptions . define === undefined
847
+ ) {
848
+ optimizeDeps . rollupOptions . define = optimizeDeps . esbuildOptions . define
849
+ }
850
+ if ( optimizeDeps . esbuildOptions . loader !== undefined ) {
851
+ const loader = optimizeDeps . esbuildOptions . loader
852
+ optimizeDeps . rollupOptions . moduleTypes ??= { }
853
+ for ( const [ key , value ] of Object . entries ( loader ) ) {
854
+ if (
855
+ optimizeDeps . rollupOptions . moduleTypes [ key ] === undefined &&
856
+ value !== 'copy' &&
857
+ value !== 'css' &&
858
+ value !== 'default' &&
859
+ value !== 'file' &&
860
+ value !== 'local-css'
861
+ ) {
862
+ optimizeDeps . rollupOptions . moduleTypes [ key ] = value
863
+ }
864
+ }
865
+ }
866
+ setResolveOptions ( 'symlinks' , optimizeDeps . esbuildOptions . preserveSymlinks )
867
+ setResolveOptions (
868
+ 'extensions' ,
869
+ optimizeDeps . esbuildOptions . resolveExtensions ,
870
+ )
871
+ setResolveOptions ( 'mainFields' , optimizeDeps . esbuildOptions . mainFields )
872
+ setResolveOptions ( 'conditionNames' , optimizeDeps . esbuildOptions . conditions )
873
+
874
+ // NOTE: the following options cannot be converted
875
+ // - legalComments
876
+ // - target, supported (Vite used to transpile down to `ESBUILD_MODULES_TARGET`)
877
+ // - ignoreAnnotations
878
+ // - jsx, jsxFactory, jsxFragment, jsxImportSource, jsxDev, jsxSideEffects
879
+ // - tsconfigRaw, tsconfig
880
+
881
+ // NOTE: the following options can be converted but probably not worth it
882
+ // - sourceRoot
883
+ // - sourcesContent (`output.sourcemapExcludeSources` is not supported by rolldown)
884
+ // - drop
885
+ // - dropLabels
886
+ // - mangleProps, reserveProps, mangleQuoted, mangleCache
887
+ // - minifyWhitespace, minifyIdentifiers, minifySyntax
888
+ // - lineLimit
889
+ // - charset
890
+ // - pure (`treeshake.manualPureFunctions` is not supported by rolldown)
891
+ // - alias (it probably does not work the same with `resolve.alias`)
892
+ // - inject
893
+ // - banner, footer
894
+ // - plugins (not sure if it's possible and need to check if it's worth it before)
895
+ // - nodePaths
896
+
897
+ // NOTE: the following options does not make sense to set / convert it
898
+ // - globalName (we only use ESM format)
899
+ // - keepNames (probably rolldown does not need it? not sure)
900
+ // - color
901
+ // - logLimit
902
+ // - logOverride
903
+ // - splitting
904
+ // - outbase
905
+ // - packages (this should not be set)
906
+ // - allowOverwrite
907
+ // - publicPath (`file` loader is not supported by rolldown)
908
+ // - entryNames, chunkNames, assetNames (Vite does not support changing these options)
909
+ // - stdin
910
+ // - absWorkingDir
911
+ }
912
+
798
913
return {
799
914
include : optimizeDeps . include ?? [ ] ,
800
915
exclude : optimizeDeps . exclude ?? [ ] ,
@@ -1018,6 +1133,7 @@ export async function resolveConfig(
1018
1133
// default environment options
1019
1134
undefined ,
1020
1135
undefined ,
1136
+ logger ,
1021
1137
)
1022
1138
1023
1139
const resolvedBuildOptions = resolveBuildEnvironmentOptions (
0 commit comments