@@ -51,6 +51,20 @@ class WebpackReactiumWebpack {
51
51
minimize : false ,
52
52
} ;
53
53
54
+ this . resolveAliases = ReactiumWebpack . Utils . registryFactory (
55
+ 'resolveAliases' ,
56
+ 'id' ,
57
+ ReactiumWebpack . Utils . Registry . MODES . CLEAN ,
58
+ ) ;
59
+ this . resolveAliases . sdk = this ;
60
+
61
+ this . transpiledDependencies = ReactiumWebpack . Utils . registryFactory (
62
+ 'transpiledDependencies' ,
63
+ 'module' ,
64
+ ReactiumWebpack . Utils . Registry . MODES . CLEAN ,
65
+ ) ;
66
+ this . transpiledDependencies . sdk = this ;
67
+
54
68
this . ignores = ReactiumWebpack . Utils . registryFactory (
55
69
'ignores' ,
56
70
'id' ,
@@ -159,6 +173,10 @@ class WebpackReactiumWebpack {
159
173
return this . overridesValue || { } ;
160
174
}
161
175
176
+ addResolveAlias ( id , alias ) {
177
+ this . resolveAliases . register ( id , { alias } ) ;
178
+ }
179
+
162
180
addRule ( id , rule ) {
163
181
this . rules . register ( id , { rule } ) ;
164
182
}
@@ -171,6 +189,10 @@ class WebpackReactiumWebpack {
171
189
this . plugins . register ( id , { plugin } ) ;
172
190
}
173
191
192
+ addTranspiledDependency ( module ) {
193
+ this . transpiledDependencies . register ( module ) ;
194
+ }
195
+
174
196
addContext ( id , context ) {
175
197
const { from, to } = context ;
176
198
this . plugins . register ( id , {
@@ -365,7 +387,29 @@ class WebpackReactiumWebpack {
365
387
config ( ) {
366
388
ReactiumWebpack . Hook . runSync ( 'before-config' , this ) ;
367
389
368
- return {
390
+ if ( this . transpiledDependencies . list . length > 0 ) {
391
+ this . addRule ( 'babel-loader' , {
392
+ test : [ / \. j s x | j s ( $ | \? ) / ] ,
393
+ exclude : [
394
+ new RegExp (
395
+ `node_modules\/(?!(${ this . transpiledDependencies . list
396
+ . map ( ( { module } ) => module )
397
+ . join ( '|' ) } )\/).*`,
398
+ ) ,
399
+ / u m d .j s $ / ,
400
+ ] ,
401
+ resolve : {
402
+ extensions : [ '.js' , '.jsx' , '.json' ] ,
403
+ } ,
404
+ use : [
405
+ {
406
+ loader : 'babel-loader' ,
407
+ } ,
408
+ ] ,
409
+ } ) ;
410
+ }
411
+
412
+ const theConfig = {
369
413
mode : this . mode ,
370
414
target : this . target ,
371
415
output : this . output ,
@@ -381,6 +425,17 @@ class WebpackReactiumWebpack {
381
425
plugins : this . getPlugins ( ) ,
382
426
...this . overrides ,
383
427
} ;
428
+
429
+ if ( this . resolveAliases . list . length > 0 ) {
430
+ const alias = { } ;
431
+ this . resolveAliases . list . forEach ( ( { id : from , alias : to } ) => {
432
+ alias [ from ] = to ;
433
+ } ) ;
434
+ theConfig . resolve = { alias } ;
435
+ }
436
+
437
+ ReactiumWebpack . Hook . runSync ( 'after-config' , theConfig , this ) ;
438
+ return theConfig ;
384
439
}
385
440
}
386
441
0 commit comments