@@ -11,50 +11,52 @@ const CSS_REGEX = /\.css$|\.scss$/
11
11
const context = path . join ( __dirname , '../src/js' )
12
12
export const outputPath = 'www'
13
13
14
+ type GetRulesInputType = { useCssModules : boolean }
14
15
15
- const getRules = options => {
16
- const useCssModules = JSON . parse ( process . env . USE_CSS_MODULES )
17
-
18
- return [
19
- {
20
- test : JS_REGEX ,
21
- loaders : [ 'babel-loader' ] ,
22
- exclude : / n o d e _ m o d u l e s /
23
- } ,
24
- {
25
- test : CSS_REGEX ,
26
- loader : ExtractTextPlugin . extract ( {
27
- fallback : "style-loader" ,
28
- use : [
29
- { loader : 'css-loader' , query : {
16
+ const getRules = ( { useCssModules } : GetRulesInputType ) : { } [ ] => [
17
+ {
18
+ test : JS_REGEX ,
19
+ loaders : [ 'babel-loader' ] ,
20
+ exclude : / n o d e _ m o d u l e s /
21
+ } ,
22
+ {
23
+ test : CSS_REGEX ,
24
+ loader : ExtractTextPlugin . extract ( {
25
+ fallback : 'style-loader' ,
26
+ use : [
27
+ { loader : 'css-loader' ,
28
+ query : {
30
29
modules : useCssModules ,
31
30
importLoaders : useCssModules ? 2 : '' ,
32
31
localIdentName : useCssModules ? '[name]__[local]__[hash:base64:5]' : ''
33
32
} } ,
34
- { loader : 'postcss-loader' , options : {
33
+ { loader : 'postcss-loader' ,
34
+ options : {
35
35
plugins : [
36
36
autoprefixer ( { browsers : [ 'last 4 versions' ] } ) ,
37
37
] ,
38
38
} } ,
39
39
{ loader : 'sass-loader' , options : { } }
40
- ]
41
- } ) ,
42
- } ,
43
- {
44
- test : / \. ( t t f | e o t | s v g ) ( \? v = [ 0 - 9 ] \. [ 0 - 9 ] \. [ 0 - 9 ] ) ? $ / ,
45
- loader : "file-loader"
46
- } ,
47
- {
48
- test : / \. j s o n $ / ,
49
- loader : "json-loader"
50
- }
51
- ]
52
- }
40
+ ]
41
+ } ) ,
42
+ } ,
43
+ {
44
+ test : / \. ( t t f | e o t | s v g ) ( \? v = [ 0 - 9 ] \. [ 0 - 9 ] \. [ 0 - 9 ] ) ? $ / ,
45
+ loader : 'file-loader'
46
+ } ,
47
+ {
48
+ test : / \. j s o n $ / ,
49
+ loader : 'json-loader'
50
+ }
51
+ ]
53
52
54
53
55
- const config = options => {
54
+ const config = ( options : { } ) : { } => {
55
+ const useCssModules = JSON . parse ( process . env . USE_CSS_MODULES )
56
+ const computedOptions = { useCssModules , ...options }
57
+
56
58
return {
57
- context : context ,
59
+ context,
58
60
entry : [
59
61
`webpack-dev-server/client?http://0.0.0.0:${ port } /` ,
60
62
path . join ( context , 'index.js' ) ,
@@ -79,12 +81,12 @@ const config = options => {
79
81
} )
80
82
] ,
81
83
node : {
82
- fs : " empty"
84
+ fs : ' empty'
83
85
} ,
84
86
module : {
85
- rules : getRules ( options )
86
- }
87
- }
87
+ rules : getRules ( computedOptions )
88
+ }
89
+ }
88
90
}
89
91
90
92
export default config
0 commit comments