@@ -2,7 +2,7 @@ import fs from 'fs';
2
2
import path from 'path' ;
3
3
import { rimraf } from '../filesystem/index.js' ;
4
4
import create_manifest_data from '../../core/create_manifest_data/index.js' ;
5
- import { copy_assets , get_no_external , posixify , resolve_entry } from '../utils.js' ;
5
+ import { copy_assets , get_svelte_packages , posixify , resolve_entry } from '../utils.js' ;
6
6
import { deep_merge , print_config_conflicts } from '../config/index.js' ;
7
7
import { create_app } from '../../core/create_app/index.js' ;
8
8
import vite from 'vite' ;
@@ -33,6 +33,7 @@ export async function build(config, { cwd = process.cwd(), runtime = '@sveltejs/
33
33
rimraf ( build_dir ) ;
34
34
35
35
const output_dir = path . resolve ( cwd , `${ SVELTE_KIT } /output` ) ;
36
+ const svelte_packages = get_svelte_packages ( cwd ) ;
36
37
37
38
const options = {
38
39
cwd,
@@ -49,7 +50,8 @@ export async function build(config, { cwd = process.cwd(), runtime = '@sveltejs/
49
50
} ) ,
50
51
output_dir,
51
52
client_entry_file : `${ SVELTE_KIT } /build/runtime/internal/start.js` ,
52
- service_worker_entry_file : resolve_entry ( config . kit . files . serviceWorker )
53
+ service_worker_entry_file : resolve_entry ( config . kit . files . serviceWorker ) ,
54
+ svelte_packages
53
55
} ;
54
56
55
57
const client_manifest = await build_client ( options ) ;
@@ -132,7 +134,7 @@ async function build_client({
132
134
} ) ;
133
135
134
136
/** @type {any } */
135
- const user_config = config . kit . vite ( ) ;
137
+ const vite_config = config . kit . vite ( ) ;
136
138
137
139
const default_config = {
138
140
server : {
@@ -143,10 +145,10 @@ async function build_client({
143
145
} ;
144
146
145
147
// don't warn on overriding defaults
146
- const [ modified_user_config ] = deep_merge ( default_config , user_config ) ;
148
+ const [ modified_vite_config ] = deep_merge ( default_config , vite_config ) ;
147
149
148
150
/** @type {[any, string[]] } */
149
- const [ merged_config , conflicts ] = deep_merge ( modified_user_config , {
151
+ const [ merged_config , conflicts ] = deep_merge ( modified_vite_config , {
150
152
configFile : false ,
151
153
root : cwd ,
152
154
base,
@@ -203,6 +205,7 @@ async function build_client({
203
205
* output_dir: string;
204
206
* client_entry_file: string;
205
207
* service_worker_entry_file: string | null;
208
+ * svelte_packages: string[];
206
209
* }} options
207
210
* @param {ClientManifest } client_manifest
208
211
* @param {string } runtime
@@ -216,7 +219,8 @@ async function build_server(
216
219
build_dir,
217
220
output_dir,
218
221
client_entry_file,
219
- service_worker_entry_file
222
+ service_worker_entry_file,
223
+ svelte_packages
220
224
} ,
221
225
client_manifest ,
222
226
runtime
@@ -419,8 +423,8 @@ async function build_server(
419
423
. trim ( )
420
424
) ;
421
425
422
- /** @type {any } */
423
- const user_config = config . kit . vite ( ) ;
426
+ /** @type {import('vite').UserConfig } */
427
+ const vite_config = config . kit . vite ( ) ;
424
428
425
429
const default_config = {
426
430
server : {
@@ -431,10 +435,10 @@ async function build_server(
431
435
} ;
432
436
433
437
// don't warn on overriding defaults
434
- const [ modified_user_config ] = deep_merge ( default_config , user_config ) ;
438
+ const [ modified_vite_config ] = deep_merge ( default_config , vite_config ) ;
435
439
436
440
/** @type {[any, string[]] } */
437
- const [ merged_config , conflicts ] = deep_merge ( modified_user_config , {
441
+ const [ merged_config , conflicts ] = deep_merge ( modified_vite_config , {
438
442
configFile : false ,
439
443
root : cwd ,
440
444
base,
@@ -457,11 +461,11 @@ async function build_server(
457
461
preserveEntrySignatures : 'strict'
458
462
}
459
463
} ,
460
- resolve : {
461
- alias : {
462
- $app : path . resolve ( ` ${ build_dir } /runtime/app` ) ,
463
- $lib : config . kit . files . lib
464
- }
464
+ optimizeDeps : {
465
+ exclude : [
466
+ ... ( ( vite_config . optimizeDeps && vite_config . optimizeDeps . exclude ) || [ ] ) ,
467
+ ... svelte_packages
468
+ ]
465
469
} ,
466
470
plugins : [
467
471
svelte ( {
@@ -471,16 +475,17 @@ async function build_server(
471
475
}
472
476
} )
473
477
] ,
474
- // this API is marked as @alpha https://github.com/vitejs/vite/blob/27785f7fcc5b45987b5f0bf308137ddbdd9f79ea/packages/vite/src/node/config.ts#L129
475
- // it's not exposed in the typescript definitions as a result
476
- // so we need to ignore the fact that it's missing
478
+ resolve : {
479
+ alias : {
480
+ $app : path . resolve ( `${ build_dir } /runtime/app` ) ,
481
+ $lib : config . kit . files . lib
482
+ }
483
+ } ,
477
484
ssr : {
478
485
// note to self: this _might_ need to be ['svelte', '@sveltejs/kit', ...get_no_external()]
479
486
// but I'm honestly not sure. roll with this for now and see if it's ok
480
- noExternal : get_no_external ( cwd , user_config . ssr && user_config . ssr . noExternal )
481
- } ,
482
- optimizeDeps : {
483
- entries : [ ]
487
+ // @ts -expect-error ssr is considered in alpha, so not yet exposed by Vite
488
+ noExternal : [ ...( ( vite_config . ssr && vite_config . ssr . noExternal ) || [ ] ) , ...svelte_packages ]
484
489
}
485
490
} ) ;
486
491
@@ -499,11 +504,21 @@ async function build_server(
499
504
* output_dir: string;
500
505
* client_entry_file: string;
501
506
* service_worker_entry_file: string | null;
507
+ * svelte_packages: string[];
502
508
* }} options
503
509
* @param {ClientManifest } client_manifest
504
510
*/
505
511
async function build_service_worker (
506
- { cwd, base, config, manifest, build_dir, output_dir, service_worker_entry_file } ,
512
+ {
513
+ cwd,
514
+ base,
515
+ config,
516
+ manifest,
517
+ build_dir,
518
+ output_dir,
519
+ service_worker_entry_file,
520
+ svelte_packages
521
+ } ,
507
522
client_manifest
508
523
) {
509
524
// TODO add any assets referenced in template .html file, e.g. favicon?
@@ -540,7 +555,7 @@ async function build_service_worker(
540
555
) ;
541
556
542
557
/** @type {any } */
543
- const user_config = config . kit . vite ( ) ;
558
+ const vite_config = config . kit . vite ( ) ;
544
559
545
560
const default_config = {
546
561
server : {
@@ -551,10 +566,10 @@ async function build_service_worker(
551
566
} ;
552
567
553
568
// don't warn on overriding defaults
554
- const [ modified_user_config ] = deep_merge ( default_config , user_config ) ;
569
+ const [ modified_vite_config ] = deep_merge ( default_config , vite_config ) ;
555
570
556
571
/** @type {[any, string[]] } */
557
- const [ merged_config , conflicts ] = deep_merge ( modified_user_config , {
572
+ const [ merged_config , conflicts ] = deep_merge ( modified_vite_config , {
558
573
configFile : false ,
559
574
root : cwd ,
560
575
base,
@@ -572,13 +587,16 @@ async function build_service_worker(
572
587
outDir : `${ output_dir } /client` ,
573
588
emptyOutDir : false
574
589
} ,
590
+ optimizeDeps : {
591
+ exclude : [
592
+ ...( ( vite_config . optimizeDeps && vite_config . optimizeDeps . exclude ) || [ ] ) ,
593
+ ...svelte_packages
594
+ ]
595
+ } ,
575
596
resolve : {
576
597
alias : {
577
598
'$service-worker' : path . resolve ( `${ build_dir } /runtime/service-worker` )
578
599
}
579
- } ,
580
- optimizeDeps : {
581
- entries : [ ]
582
600
}
583
601
} ) ;
584
602
0 commit comments