@@ -38,11 +38,22 @@ export interface LocalAliasesOptions {
3838 alwaysUseSrc ?: boolean ;
3939}
4040
41- const discoverLocalAliases = (
41+ interface EclipseDocksPackageJson {
42+ name ?: string ;
43+ /**
44+ * Optional: extra `optimizeDeps.exclude` entries for this workspace package
45+ * (e.g. heavy WASM npm deps that must not be pre-bundled in dev).
46+ */
47+ eclipseDocks ?: {
48+ viteOptimizeDepsExclude ?: string [ ] ;
49+ } ;
50+ }
51+
52+ function discoverLocalAliasesAndExtraExcludes (
4253 cfg : Pick < UserConfig , 'root' > ,
4354 mode : string ,
4455 options : LocalAliasesOptions = { } ,
45- ) : Record < string , string > => {
56+ ) : { aliases : Record < string , string > ; extraOptimizeDepsExclude : string [ ] } {
4657 const useSrcInDev = options . useSrcInDev ?? true ;
4758 const alwaysUseSrc = options . alwaysUseSrc ?? false ;
4859
@@ -58,54 +69,68 @@ const discoverLocalAliases = (
5869 ? options . patterns
5970 : [ { folderPrefix : 'extension-' } ] ;
6071
61- return entries . reduce < Record < string , string > > ( ( aliases , entry ) => {
72+ const aliases : Record < string , string > = { } ;
73+ const extraOptimizeDepsExclude : string [ ] = [ ] ;
74+
75+ for ( const entry of entries ) {
6276 if ( ! entry . isDirectory ( ) ) {
63- return aliases ;
77+ continue ;
6478 }
6579
6680 const pattern = patterns . find ( ( p ) =>
6781 entry . name . startsWith ( p . folderPrefix ) ,
6882 ) ;
6983
7084 if ( ! pattern ) {
71- return aliases ;
85+ continue ;
7286 }
7387
7488 const pkgDir = path . join ( packagesRoot , entry . name ) ;
7589 const pkgPath = path . join ( pkgDir , 'package.json' ) ;
7690 if ( ! fs . existsSync ( pkgPath ) ) {
77- return aliases ;
91+ continue ;
7892 }
7993
8094 const pkgJson = fs . readFileSync ( pkgPath , 'utf8' ) ;
81- const pkg = JSON . parse ( pkgJson ) as { name ?: string } ;
95+ const pkg = JSON . parse ( pkgJson ) as EclipseDocksPackageJson ;
8296 if ( ! pkg . name ) {
83- return aliases ;
97+ continue ;
8498 }
8599
86100 if (
87101 pattern . packageNamePrefix &&
88102 ! pkg . name . startsWith ( pattern . packageNamePrefix )
89103 ) {
90- return aliases ;
104+ continue ;
91105 }
92106
93107 const entryPoint = useSrc
94108 ? path . join ( pkgDir , 'src' )
95109 : path . join ( pkgDir , 'dist' ) ;
96110
97111 aliases [ pkg . name ] = entryPoint ;
98- return aliases ;
99- } , { } ) ;
100- } ;
112+
113+ const more = pkg . eclipseDocks ?. viteOptimizeDepsExclude ;
114+ if ( Array . isArray ( more ) ) {
115+ for ( const id of more ) {
116+ if ( typeof id === 'string' && id . length > 0 ) {
117+ extraOptimizeDepsExclude . push ( id ) ;
118+ }
119+ }
120+ }
121+ }
122+
123+ return { aliases, extraOptimizeDepsExclude } ;
124+ }
101125
102126export const localAliasesPlugin = (
103127 options : LocalAliasesOptions = { } ,
104128) : PluginOption => {
105129 return {
106130 name : 'local-aliases' ,
107131 config ( config , env ) {
108- const aliases = discoverLocalAliases ( config , env . mode , options ) ;
132+ const { aliases, extraOptimizeDepsExclude } =
133+ discoverLocalAliasesAndExtraExcludes ( config , env . mode , options ) ;
109134
110135 config . resolve ??= { } ;
111136 const existingAlias = config . resolve . alias ?? { } ;
@@ -119,7 +144,11 @@ export const localAliasesPlugin = (
119144 const existingExclude = config . optimizeDeps . exclude ?? [ ] ;
120145
121146 config . optimizeDeps . exclude = [
122- ...new Set ( [ ...existingExclude , ...Object . keys ( aliases ) ] ) ,
147+ ...new Set ( [
148+ ...existingExclude ,
149+ ...Object . keys ( aliases ) ,
150+ ...extraOptimizeDepsExclude ,
151+ ] ) ,
123152 ] ;
124153 } ,
125154 } ;
0 commit comments