1- import { WebpackConfig } from './webpack'
1+ import { Webpack as WebpackConfig } from './webpack'
22import { assign , literalReplace } from '@easy-webpack/assign'
33export { get } from 'lodash'
4- export * from './webpack'
4+ export { Webpack as WebpackConfig } from './webpack'
55export * from '@easy-webpack/assign'
6- export type EasyWebpackConfig = WebpackConfig | ( ( this : WebpackConfig ) => WebpackConfig )
76
87function hasProcessFlag ( flag ) {
98 return process . argv . join ( '' ) . indexOf ( flag ) > - 1
109}
1110
11+ export type WebpackConfigWithMetadata = WebpackConfig & { metadata : any }
12+ export type EasyWebpackConfig = WebpackConfigWithMetadata | ( ( this : WebpackConfigWithMetadata ) => WebpackConfigWithMetadata )
13+
1214export function generateConfig ( ...configs : Array < EasyWebpackConfig > ) {
1315 let config = {
1416 metadata : {
@@ -17,11 +19,11 @@ export function generateConfig(...configs: Array<EasyWebpackConfig>) {
1719 ENV : process . env . NODE_ENV || process . env . ENV || 'development' ,
1820 HMR : hasProcessFlag ( 'hot' ) || ! ! process . env . WEBPACK_HMR ,
1921 }
20- } as WebpackConfig
22+ } as WebpackConfigWithMetadata
2123
2224 for ( let configMethod of configs ) {
2325 if ( typeof configMethod === 'function' ) {
24- let overlayConfig = configMethod . apply ( config ) as WebpackConfig
26+ let overlayConfig = configMethod . apply ( config ) as WebpackConfigWithMetadata
2527 config = assign ( config , overlayConfig , configMethod [ 'name' ] || 'config' , 'replace' )
2628 } else {
2729 let overlayConfig = configMethod
@@ -31,4 +33,13 @@ export function generateConfig(...configs: Array<EasyWebpackConfig>) {
3133 return config
3234}
3335
36+ export function stripMetadata ( config : EasyWebpackConfig ) {
37+ let overlayConfig : WebpackConfigWithMetadata
38+ if ( typeof config === 'function' ) {
39+ overlayConfig = config . apply ( config )
40+ }
41+ delete overlayConfig . metadata
42+ return overlayConfig as WebpackConfig
43+ }
44+
3445export default generateConfig
0 commit comments