5
5
/* eslint-disable comma-dangle */
6
6
7
7
const ExtractTextPlugin = require ( 'extract-text-webpack-plugin' ) ;
8
+ const merge = require ( 'webpack-merge' ) ;
8
9
const config = require ( './webpack.client.base.config' ) ;
9
10
const { resolve } = require ( 'path' ) ;
10
11
const webpackConfigLoader = require ( 'react-on-rails/webpackConfigLoader' ) ;
@@ -13,101 +14,104 @@ const { paths, publicPath } = webpackConfigLoader(configPath);
13
14
14
15
const devBuild = process . env . NODE_ENV !== 'production' ;
15
16
16
- config . output = {
17
- filename : '[name].js' ,
18
- path : resolve ( '..' , paths . output , paths . assets ) ,
19
- publicPath,
20
- } ,
17
+ if ( devBuild ) {
18
+ console . log ( 'Webpack dev build for Rails' ) ; // eslint-disable-line no-console
19
+ config . devtool = 'eval-source-map' ;
20
+ } else {
21
+ console . log ( 'Webpack production build for Rails' ) ; // eslint-disable-line no-console
22
+ }
21
23
22
- // See webpack.client.base. config for adding modules common to both the webpack dev server and rails
24
+ module . exports = merge ( config , {
23
25
24
- config . module . rules . push (
25
- {
26
- test : / \. j s x ? $ / ,
27
- use : 'babel-loader' ,
28
- exclude : / n o d e _ m o d u l e s / ,
26
+ output : {
27
+ filename : '[name].js' ,
28
+ path : resolve ( '..' , paths . output , paths . assets ) ,
29
+ publicPath,
29
30
} ,
30
- {
31
- test : / \. c s s $ / ,
32
- loader : ExtractTextPlugin . extract ( {
33
- fallback : 'style-loader' ,
34
- use : [
35
- {
36
- loader : 'css-loader' ,
37
- options : {
38
- minimize : true ,
39
- modules : true ,
40
- importLoaders : 1 ,
41
- localIdentName : '[name]__[local]__[hash:base64:5]' ,
42
- } ,
43
- } ,
44
- 'postcss-loader' ,
45
- ] ,
46
- } ) ,
47
- } ,
48
- {
49
- test : / \. s c s s $ / ,
50
- use : ExtractTextPlugin . extract ( {
51
- fallback : 'style-loader' ,
52
- loader : [
53
- {
54
- loader : 'css-loader' ,
55
- options : {
56
- minimize : true ,
57
- modules : true ,
58
- importLoaders : 3 ,
59
- localIdentName : '[name]__[local]__[hash:base64:5]' ,
60
- } ,
61
- } ,
62
- {
63
- loader : 'postcss-loader' ,
31
+
32
+ // See webpack.client.base.config for adding modules common to both the webpack dev server and rails
33
+
34
+ module : {
35
+ rules : [
36
+ {
37
+ test : / \. j s x ? $ / ,
38
+ use : 'babel-loader' ,
39
+ exclude : / n o d e _ m o d u l e s / ,
40
+ } ,
41
+ {
42
+ test : / \. c s s $ / ,
43
+ loader : ExtractTextPlugin . extract ( {
44
+ fallback : 'style-loader' ,
45
+ use : [
46
+ {
47
+ loader : 'css-loader' ,
48
+ options : {
49
+ minimize : true ,
50
+ modules : true ,
51
+ importLoaders : 1 ,
52
+ localIdentName : '[name]__[local]__[hash:base64:5]' ,
53
+ } ,
54
+ } ,
55
+ 'postcss-loader' ,
56
+ ] ,
57
+ } ) ,
58
+ } ,
59
+ {
60
+ test : / \. s c s s $ / ,
61
+ use : ExtractTextPlugin . extract ( {
62
+ fallback : 'style-loader' ,
63
+ loader : [
64
+ {
65
+ loader : 'css-loader' ,
66
+ options : {
67
+ minimize : true ,
68
+ modules : true ,
69
+ importLoaders : 3 ,
70
+ localIdentName : '[name]__[local]__[hash:base64:5]' ,
71
+ } ,
72
+ } ,
73
+ {
74
+ loader : 'postcss-loader' ,
75
+ options : {
76
+ plugins : 'autoprefixer'
77
+ }
78
+ } ,
79
+ 'sass-loader' ,
80
+ {
81
+ loader : 'sass-resources-loader' ,
82
+ options : {
83
+ resources : './app/assets/styles/app-variables.scss'
84
+ } ,
85
+ }
86
+ ] ,
87
+ } ) ,
88
+ } ,
89
+ {
90
+ test : require . resolve ( 'react' ) ,
91
+ use : {
92
+ loader : 'imports-loader' ,
64
93
options : {
65
- plugins : 'autoprefixer'
94
+ shim : 'es5-shim/es5-shim' ,
95
+ sham : 'es5-shim/es5-sham' ,
66
96
}
67
- } ,
68
- 'sass-loader' ,
69
- {
70
- loader : 'sass-resources-loader' ,
97
+ }
98
+ } ,
99
+ {
100
+ test : require . resolve ( 'jquery-ujs' ) ,
101
+ use : {
102
+ loader : 'imports-loader' ,
71
103
options : {
72
- resources : './app/assets/styles/app-variables.scss'
73
- } ,
104
+ jQuery : 'jquery' ,
105
+ }
74
106
}
75
- ] ,
76
- } ) ,
77
- } ,
78
- {
79
- test : require . resolve ( 'react' ) ,
80
- use : {
81
- loader : 'imports-loader' ,
82
- options : {
83
- shim : 'es5-shim/es5-shim' ,
84
- sham : 'es5-shim/es5-sham' ,
85
107
}
86
- }
108
+ ] ,
87
109
} ,
88
- {
89
- test : require . resolve ( 'jquery-ujs' ) ,
90
- use : {
91
- loader : 'imports-loader' ,
92
- options : {
93
- jQuery : 'jquery' ,
94
- }
95
- }
96
- }
97
- ) ;
98
110
99
- config . plugins . push (
100
- new ExtractTextPlugin ( {
101
- filename : '[name].css' ,
102
- allChunks : true
103
- } )
104
- ) ;
105
-
106
- if ( devBuild ) {
107
- console . log ( 'Webpack dev build for Rails' ) ; // eslint-disable-line no-console
108
- config . devtool = 'eval-source-map' ;
109
- } else {
110
- console . log ( 'Webpack production build for Rails' ) ; // eslint-disable-line no-console
111
- }
112
-
113
- module . exports = config ;
111
+ plugins : [
112
+ new ExtractTextPlugin ( {
113
+ filename : '[name].css' ,
114
+ allChunks : true
115
+ } ) ,
116
+ ] ,
117
+ } ) ;
0 commit comments