@@ -12,34 +12,47 @@ module.exports = function WebpackAdapter(api, opts) {
1212
1313 let initialized = false ;
1414
15+ const logger = api . logger ;
16+
1517 api . extendMethod ( 'resolveChainableWebpackConfig' , {
1618 description : 'resolve webpack-chain config.' ,
17- } , ( ) => {
19+ } , ( { target = 'app' } = { } ) => {
1820 if ( ! initialized ) {
19- api . logger . error ( 'please call after "onInitWillDone" !' ) ;
20- process . exit ( 1 ) ;
21+ logger . throw ( 'please call after "onInitWillDone" !' ) ;
2122 }
22- const selfConfig = api . selfConfig || { } ;
23- const originalConfig = selfConfig . originalConfig || { } ;
24- const _originalWebpackConfig = _ . cloneDeep ( originalConfig . webpack || { } ) ;
25- delete _originalWebpackConfig . entry ; // 不接受 entry, 内部已经做了兼容
26- delete _originalWebpackConfig . plugins ; // 不接受 plugins
2723
2824 const webpackChainConfig = new Config ( ) ;
29- webpackChainConfig . merge ( _originalWebpackConfig ) ;
25+ let finalWebpackChainConfig = webpackChainConfig ;
26+ if ( target === 'plugin' ) {
27+ // TODO 针对所有 plugin 的配置进行处理
28+ finalWebpackChainConfig = api . applyPluginHooks ( 'modifyChainWebpackPluginConfig' , webpackChainConfig ) ;
29+ api . applyPluginHooks ( 'onChainWebpcakPluginConfig' , finalWebpackChainConfig ) ;
30+ } else {
31+ const selfConfig = api . selfConfig || { } ;
32+ const originalConfig = selfConfig . originalConfig || { } ;
33+ const _originalWebpackConfig = _ . cloneDeep ( originalConfig . webpack || { } ) ;
34+ delete _originalWebpackConfig . entry ; // 不接受 entry, 内部已经做了兼容
35+ delete _originalWebpackConfig . plugins ; // 不接受 plugins
36+ webpackChainConfig . merge ( _originalWebpackConfig ) ;
3037
31- const finalWebpackChainConfig = api . applyPluginHooks ( 'modifyChainWebpackConfig' , webpackChainConfig ) ;
32- api . applyPluginHooks ( 'onChainWebpcakConfig' , finalWebpackChainConfig ) ;
38+ finalWebpackChainConfig = api . applyPluginHooks ( 'modifyChainWebpackConfig' , webpackChainConfig ) ;
39+ api . applyPluginHooks ( 'onChainWebpcakConfig' , finalWebpackChainConfig ) ;
40+ }
3341
3442 api . setState ( 'webpackChainConfig' , finalWebpackChainConfig ) ;
3543 return finalWebpackChainConfig ;
3644 } ) ;
3745
3846 api . extendMethod ( 'resolveWebpackConfig' , {
3947 description : 'resolve webpack config.' ,
40- } , ( ) => {
41- const finalWebpackChainConfig = api . resolveChainableWebpackConfig ( ) ;
42- const webpackConfig = api . applyPluginHooks ( 'modifyWebpackConfig' , finalWebpackChainConfig . toConfig ( ) ) ;
48+ } , ( { target = 'app' } = { } ) => {
49+ const finalWebpackChainConfig = api . resolveChainableWebpackConfig ( { target } ) ;
50+ const webpackConfig = finalWebpackChainConfig . toConfig ( ) ;
51+ if ( target === 'plugin' ) {
52+ api . applyPluginHooks ( 'modifyWebpackPluginConfig' , webpackConfig ) ;
53+ } else {
54+ api . applyPluginHooks ( 'modifyWebpackConfig' , webpackConfig ) ;
55+ }
4356
4457 api . setState ( 'webpackConfig' , webpackConfig ) ;
4558 return webpackConfig ;
0 commit comments