@@ -11,15 +11,17 @@ var stylePaths = [
11
11
path . join ( cwd , 'components' )
12
12
] ;
13
13
14
- const commonConfig = {
14
+ const commonConfig = env => ( {
15
15
resolve : {
16
16
extensions : [ '.js' , '.jsx' , '.scss' ]
17
17
} ,
18
+
18
19
resolveLoader : {
19
20
alias : {
20
21
'page-loader' : path . resolve ( cwd , 'loaders/page-loader' )
21
22
}
22
23
} ,
24
+
23
25
module : {
24
26
rules : [
25
27
{
@@ -35,6 +37,44 @@ const commonConfig = {
35
37
path . join ( __dirname , 'components' )
36
38
]
37
39
} ,
40
+ {
41
+ test : / \. f o n t .j s $ / ,
42
+ loader : ExtractTextPlugin . extract ( {
43
+ fallback : 'style-loader' ,
44
+ use : [
45
+ 'css-loader' ,
46
+ {
47
+ loader : 'fontgen-loader' ,
48
+ options : { embed : true }
49
+ }
50
+ ]
51
+ } )
52
+ } ,
53
+ {
54
+ test : / \. c s s $ / ,
55
+ loader : ExtractTextPlugin . extract ( {
56
+ fallback : 'style-loader' ,
57
+ use : 'css-loader'
58
+ } ) ,
59
+ include : stylePaths
60
+ } ,
61
+ {
62
+ test : / \. s c s s $ / ,
63
+ loader : ExtractTextPlugin . extract ( {
64
+ fallback : 'style-loader' ,
65
+ use : [
66
+ 'css-loader' ,
67
+ 'postcss-loader' ,
68
+ {
69
+ loader : 'sass-loader' ,
70
+ options : {
71
+ includePaths : [ path . join ( './styles/partials' ) ]
72
+ }
73
+ }
74
+ ]
75
+ } ) ,
76
+ include : stylePaths
77
+ } ,
38
78
{
39
79
test : / \. w o f f 2 ? $ / ,
40
80
use : {
@@ -54,13 +94,20 @@ const commonConfig = {
54
94
}
55
95
]
56
96
} ,
97
+
57
98
plugins : [
58
99
new CopyWebpackPlugin ( [ {
59
100
from : './assets' ,
60
101
to : './assets'
61
- } ] )
102
+ } ] ) ,
103
+
104
+ new ExtractTextPlugin ( {
105
+ filename : '[chunkhash].css' ,
106
+ allChunks : true ,
107
+ disable : env === 'develop'
108
+ } )
62
109
]
63
- } ;
110
+ } ) ;
64
111
65
112
const interactiveConfig = {
66
113
resolve : {
@@ -78,119 +125,16 @@ const interactiveConfig = {
78
125
]
79
126
} ;
80
127
81
- const developmentConfig = {
82
- module : {
83
- rules : [
84
- {
85
- test : / \. f o n t .j s $ / ,
86
- use : [ 'style-loader' , 'css-loader' , 'fontgen-loader' ]
87
- } ,
88
- {
89
- test : / \. c s s $ / ,
90
- use : [ 'style-loader' , 'css-loader' ] ,
91
- include : stylePaths
92
- } ,
93
- {
94
- test : / \. s c s s $ / ,
95
- use : [
96
- 'style-loader' ,
97
- 'css-loader' ,
98
- postcssLoader ( ) ,
99
- sassLoader ( )
100
- ] ,
101
- include : stylePaths
102
- }
103
- ]
104
- }
105
- } ;
106
-
107
- const buildConfig = {
108
- module : {
109
- rules : [
110
- {
111
- test : / \. f o n t .j s $ / ,
112
- loader : ExtractTextPlugin . extract ( {
113
- fallback : 'style-loader' ,
114
- use : [
115
- 'css-loader' ,
116
- {
117
- loader : 'fontgen-loader' ,
118
- options : {
119
- embed : true
120
- }
121
- }
122
- ]
123
- } )
124
- } ,
125
- {
126
- test : / \. c s s $ / ,
127
- loader : ExtractTextPlugin . extract ( {
128
- fallback : 'style-loader' ,
129
- use : 'css-loader'
130
- } ) ,
131
- include : stylePaths
132
- } ,
133
- {
134
- test : / \. s c s s $ / ,
135
- loader : ExtractTextPlugin . extract ( {
136
- fallback : 'style-loader' ,
137
- use : [
138
- 'css-loader' ,
139
- postcssLoader ( ) ,
140
- sassLoader ( )
141
- ]
142
- } ) ,
143
- include : stylePaths
144
- }
145
- ]
146
- } ,
147
- plugins : [
148
- new ExtractTextPlugin ( {
149
- filename : '[chunkhash].css' ,
150
- allChunks : true
151
- } )
152
- ]
153
- } ;
154
-
155
- function postcssLoader ( ) {
156
- return {
157
- loader : 'postcss-loader' ,
158
- options : {
159
- plugins : ( ) => ( [
160
- require ( 'autoprefixer' ) ,
161
- ] )
162
- }
163
- } ;
164
- }
165
-
166
- function sassLoader ( ) {
167
- return {
168
- loader : 'sass-loader' ,
169
- options : {
170
- includePaths : [ path . join ( './styles/partials' ) ]
171
- }
172
- } ;
173
- }
174
-
175
128
module . exports = function ( env ) {
176
129
switch ( env ) {
177
130
case 'develop' :
178
- return merge (
179
- commonConfig ,
180
- developmentConfig
181
- ) ;
131
+ case 'build' :
132
+ return commonConfig ( env ) ;
182
133
183
134
case 'interactive' :
184
135
return merge (
185
- commonConfig ,
136
+ commonConfig ( env ) ,
186
137
interactiveConfig
187
138
) ;
188
-
189
- case 'build' :
190
- case 'lint:links' :
191
- return merge (
192
- commonConfig ,
193
- buildConfig
194
- ) ;
195
139
}
196
140
} ;
0 commit comments