1
1
import * as path from 'path' ;
2
2
import * as fs from 'fs' ;
3
3
import * as webpackMerge from 'webpack-merge' ;
4
+ import * as AssetsPlugin from 'assets-webpack-plugin' ;
5
+ import { HtmlCliPlugin } from '../utilities/html-cli-plugin' ;
4
6
import { CliConfig } from './config' ;
5
7
import { NgCliEnvironmentPlugin } from '../utilities/environment-plugin' ;
6
8
import {
@@ -9,6 +11,7 @@ import {
9
11
getWebpackProdConfigPartial ,
10
12
getWebpackMobileConfigPartial ,
11
13
getWebpackMobileProdConfigPartial
14
+ getWebpackCSSConfig
12
15
} from './' ;
13
16
14
17
export class NgCliWebpackConfig {
@@ -22,6 +25,7 @@ export class NgCliWebpackConfig {
22
25
private webpackMaterialE2EConfig : any ;
23
26
private webpackMobileConfigPartial : any ;
24
27
private webpackMobileProdConfigPartial : any ;
28
+ private webpackCSSConfig : any ;
25
29
26
30
constructor ( public ngCliProject : any , public target : string , public environment : string ) {
27
31
const sourceDir = CliConfig . fromProject ( ) . defaults . sourceDir ;
@@ -31,6 +35,7 @@ export class NgCliWebpackConfig {
31
35
this . webpackBaseConfig = getWebpackCommonConfig ( this . ngCliProject . root , sourceDir ) ;
32
36
this . webpackDevConfigPartial = getWebpackDevConfigPartial ( this . ngCliProject . root , sourceDir ) ;
33
37
this . webpackProdConfigPartial = getWebpackProdConfigPartial ( this . ngCliProject . root , sourceDir ) ;
38
+ this . webpackCSSConfig = getWebpackCSSConfig ( this . ngCliProject . root , sourceDir ) ;
34
39
35
40
if ( CliConfig . fromProject ( ) . apps [ 0 ] . mobile ) {
36
41
this . webpackMobileConfigPartial = getWebpackMobileConfigPartial ( this . ngCliProject . root , sourceDir ) ;
@@ -40,20 +45,34 @@ export class NgCliWebpackConfig {
40
45
}
41
46
42
47
this . generateConfig ( ) ;
43
- this . config . plugins . unshift ( new NgCliEnvironmentPlugin ( {
48
+ this . config [ 0 ] . plugins . unshift ( new NgCliEnvironmentPlugin ( {
44
49
path : path . resolve ( this . ngCliProject . root , `./${ sourceDir } /app/environments/` ) ,
45
50
src : 'environment.ts' ,
46
51
dest : `environment.${ this . environment } .ts`
47
52
} ) ) ;
53
+
54
+ const assetsPluginInstance = new AssetsPlugin ( { filename : 'cli.assets.json' } ) ;
55
+ const htmlCliPlugin = new HtmlCliPlugin ( ) ;
56
+
57
+ this . config . forEach ( conf => {
58
+ conf . plugins . push ( assetsPluginInstance ) ;
59
+ conf . plugins . push ( htmlCliPlugin ) ;
60
+ } ) ;
48
61
}
49
62
50
63
generateConfig ( ) : void {
51
64
switch ( this . target ) {
52
65
case "development" :
53
- this . config = webpackMerge ( this . webpackBaseConfig , this . webpackDevConfigPartial ) ;
66
+ this . config = [
67
+ webpackMerge ( this . webpackBaseConfig , this . webpackDevConfigPartial ) ,
68
+ this . webpackCSSConfig
69
+ ] ;
54
70
break ;
55
71
case "production" :
56
- this . config = webpackMerge ( this . webpackBaseConfig , this . webpackProdConfigPartial ) ;
72
+ this . config = [
73
+ webpackMerge ( this . webpackBaseConfig , this . webpackProdConfigPartial ) ,
74
+ this . webpackCSSConfig
75
+ ] ;
57
76
break ;
58
77
default :
59
78
throw new Error ( "Invalid build target. Only 'development' and 'production' are available." ) ;
0 commit comments