@@ -5,6 +5,7 @@ import { getPlatformName } from '../helpers/platform';
55import { env as _env , IWebpackEnv } from '../index' ;
66import { error } from '../helpers/log' ;
77import base from './base' ;
8+ import { hasDependency } from '../helpers/dependencies' ;
89
910export default function ( config : Config , env : IWebpackEnv = _env ) : Config {
1011 base ( config , env ) ;
@@ -28,33 +29,70 @@ export default function (config: Config, env: IWebpackEnv = _env): Config {
2829 config . module . rule ( 'workers' ) . test ( / \. ( j s | t s | s v e l t e ) $ / ) ;
2930
3031 // add a rule for .svelte files
31- config . module
32- . rule ( 'svelte' )
33- . test ( / \. s v e l t e $ / )
34- . exclude . add ( / n o d e _ m o d u l e s / )
35- . end ( )
36- . use ( 'svelte-loader' )
37- . loader ( 'svelte-loader' )
38- . tap ( ( options ) => {
39- const svelteConfig = getSvelteConfig ( ) ;
40- return {
41- ...options ,
42- compilerOptions : {
43- ...svelteConfig ?. compilerOptions ,
32+ if ( hasDependency ( 'svelte-loader' ) ) {
33+ // configure using svelte-loader
34+ config . module
35+ . rule ( 'svelte' )
36+ . test ( / \. s v e l t e $ / )
37+ . exclude . add ( / n o d e _ m o d u l e s / )
38+ . end ( )
39+ . use ( 'svelte-loader' )
40+ . loader ( 'svelte-loader' )
41+ . tap ( ( options ) => {
42+ const svelteConfig = getSvelteConfig ( ) ;
43+ return {
44+ ...options ,
45+ compilerOptions : {
46+ ...svelteConfig ?. compilerOptions ,
47+ dev : ! production ,
48+ } ,
49+ preprocess : svelteConfig ?. preprocess ,
50+ hotReload : ! production ,
51+ hotOptions : {
52+ injectCss : false ,
53+ native : true ,
54+ } ,
55+ } ;
56+ } ) ;
57+ } else {
58+ // fallback for projects still using svelte-loader-hot
59+ config . module
60+ . rule ( 'svelte' )
61+ . test ( / \. s v e l t e $ / )
62+ . exclude . add ( / n o d e _ m o d u l e s / )
63+ . end ( )
64+ . use ( 'svelte-loader-hot' )
65+ . loader ( 'svelte-loader-hot' )
66+ . tap ( ( options ) => {
67+ const svelteConfig = getSvelteConfig ( ) ;
68+ return {
69+ ...options ,
4470 dev : ! production ,
45- } ,
46- preprocess : svelteConfig ?. preprocess ,
47- hotReload : ! production ,
48- hotOptions : {
49- injectCss : false ,
50- native : true ,
51- } ,
52- } ;
53- } ) ;
71+ preprocess : getSvelteConfigPreprocessor ( ) ,
72+ hotReload : ! production ,
73+ hotOptions : {
74+ injectCss : false ,
75+ native : true ,
76+ } ,
77+ // Suppress A11y warnings
78+ onwarn ( warning , warn ) {
79+ if ( ! / A 1 1 y : / . test ( warning . message ) ) {
80+ warn ( warning ) ;
81+ }
82+ } ,
83+ } ;
84+ } ) ;
85+ }
5486
5587 return config ;
5688}
5789
90+ function getSvelteConfigPreprocessor ( ) : any {
91+ const config = getSvelteConfig ( ) ;
92+
93+ return config ?. preprocess ;
94+ }
95+
5896interface ISvelteConfig {
5997 preprocess : any ;
6098 compilerOptions : any ;
0 commit comments