1
- var webpack = require ( 'webpack' ) ,
2
- CleanWebpackPlugin = require ( 'clean-webpack-plugin' ) ,
3
- HtmlWebpackPlugin = require ( 'html-webpack-plugin' ) ,
4
- ExtractTextPlugin = require ( 'extract-text-webpack -plugin' ) ,
5
- path = require ( 'path' ) ;
1
+ const webpack = require ( 'webpack' ) ,
2
+ CleanWebpackPlugin = require ( 'clean-webpack-plugin' ) ,
3
+ HtmlWebpackPlugin = require ( 'html-webpack-plugin' ) ,
4
+ MiniCssExtractPlugin = require ( 'mini-css-extract -plugin' ) ;
5
+ path = require ( 'path' ) ;
6
6
7
7
module . exports = {
8
+ mode : 'production' ,
9
+
8
10
entry : {
9
11
'polyfills' : root ( 'src' , 'polyfills.ts' ) ,
10
12
'vendor' : root ( 'src' , 'vendor.ts' ) ,
11
13
'app' : root ( 'src' , 'main.ts' )
12
14
} ,
13
-
15
+
14
16
output : {
15
17
path : root ( 'build' ) ,
16
18
filename : '[name].js' ,
17
19
chunkFilename : '[id].chunk.js'
18
20
} ,
19
-
21
+
20
22
resolve : {
21
23
extensions : [ '.ts' , '.js' ]
22
24
} ,
23
-
25
+
24
26
devServer : {
25
27
historyApiFallback : true ,
26
28
stats : 'minimal' ,
@@ -29,7 +31,7 @@ module.exports = {
29
31
inline : true ,
30
32
openPage : ''
31
33
} ,
32
-
34
+
33
35
module : {
34
36
rules : [
35
37
{
@@ -47,10 +49,10 @@ module.exports = {
47
49
{
48
50
test : / \. c s s $ / ,
49
51
exclude : root ( 'src' , 'app' ) ,
50
- loader : ExtractTextPlugin . extract ( {
51
- fallback : "style- loader" ,
52
- use : " css-loader"
53
- } )
52
+ use : [
53
+ MiniCssExtractPlugin . loader ,
54
+ ' css-loader'
55
+ ]
54
56
} ,
55
57
{
56
58
test : / \. c s s $ / ,
@@ -59,29 +61,46 @@ module.exports = {
59
61
}
60
62
]
61
63
} ,
62
-
64
+
63
65
plugins : [
64
66
new CleanWebpackPlugin ( 'build' ) ,
65
- new webpack . optimize . CommonsChunkPlugin ( {
66
- name : [ 'app' , 'vendor' , 'polyfills' ]
67
- } ) ,
68
67
new webpack . ContextReplacementPlugin (
69
- / a n g u l a r ( \\ | \/ ) c o r e ( \\ | \/ ) @ a n g u l a r / ,
68
+ / \@ a n g u l a r ( \\ | \/ ) c o r e ( \\ | \/ ) f ? e s m 5 / ,
70
69
root ( 'src' )
71
70
) ,
72
71
new HtmlWebpackPlugin ( {
73
72
template : root ( 'src' , 'index.html' ) ,
74
73
favicon : root ( 'src' , 'favicon.ico' )
75
74
} ) ,
76
-
77
- new ExtractTextPlugin ( '[name].css' )
75
+
76
+ new MiniCssExtractPlugin ( {
77
+ // Options similar to the same options in webpackOptions.output
78
+ // both options are optional
79
+ filename : "[name].css" ,
80
+ chunkFilename : "[id].css"
81
+ } )
78
82
] ,
79
-
83
+
84
+ optimization : {
85
+ splitChunks : {
86
+ cacheGroups : {
87
+ //app: { name: 'app'},
88
+ vendor : {
89
+ test : / [ \\ / ] n o d e _ m o d u l e s [ \\ / ] / ,
90
+ chunks : 'initial' ,
91
+ name : 'vendor' ,
92
+ enforce : true
93
+ } ,
94
+ //polyfills: { name: 'polyfills'},
95
+ }
96
+ }
97
+ } ,
98
+
80
99
devtool : 'source-map'
81
100
} ;
82
101
83
102
84
103
85
104
function root ( ...args ) {
86
- return path . join . apply ( path , [ __dirname ] . concat ( args ) )
105
+ return path . join ( __dirname , ... args )
87
106
}
0 commit comments