@@ -12,6 +12,64 @@ const MiniCssExtractPlugin = require('mini-css-extract-plugin')
12
12
const HtmlWebpackPlugin = require ( 'html-webpack-plugin' )
13
13
const { VueLoaderPlugin } = require ( 'vue-loader' )
14
14
15
+ const isProd = process . env . NODE_ENV === 'production'
16
+
17
+ const styleLoaders = isProd ? [
18
+ { { #if usesass} }
19
+ {
20
+ test : / \. s c s s $ / ,
21
+ use : [ MiniCssExtractPlugin . loader , 'css-loader' , 'sass-loader' ] ,
22
+ } ,
23
+ {
24
+ test : / \. s a s s $ / ,
25
+ use : [ MiniCssExtractPlugin . loader , 'css-loader' , 'sass-loader?indentedSyntax' ] ,
26
+ } ,
27
+ { { / i f } }
28
+ { { #if useless} }
29
+ {
30
+ test : / \. l e s s $ / ,
31
+ use : [ MiniCssExtractPlugin . loader , 'css-loader' , 'less-loader' ] ,
32
+ } ,
33
+ { { / i f } }
34
+ {
35
+ test : / \. c s s $ / ,
36
+ use : [ MiniCssExtractPlugin . loader , 'css-loader' ] ,
37
+ }
38
+ ] : [
39
+ { { #if usesass} }
40
+ {
41
+ test : / \. s c s s $ / ,
42
+ use : [ 'vue-style-loader' , 'css-loader' , 'sass-loader' ] ,
43
+ } ,
44
+ {
45
+ test : / \. s a s s $ / ,
46
+ use : [ 'vue-style-loader' , 'css-loader' , 'sass-loader?indentedSyntax' ] ,
47
+ } ,
48
+ { { / i f } }
49
+ { { #if useless} }
50
+ {
51
+ test : / \. l e s s $ / ,
52
+ use : [ 'vue-style-loader' , 'css-loader' , 'less-loader' ] ,
53
+ } ,
54
+ { { / i f } }
55
+ {
56
+ test : / \. c s s $ / ,
57
+ use : [ 'vue-style-loader' , 'css-loader' ] ,
58
+ }
59
+ ] ;
60
+
61
+ { { #if eslint} } const createLintingRule = ( ) => ( {
62
+ test : / \. ( j s | v u e ) $ / ,
63
+ enforce : 'pre' ,
64
+ exclude : / n o d e _ m o d u l e s / ,
65
+ use : {
66
+ loader : 'eslint-loader' ,
67
+ options : {
68
+ formatter : require ( 'eslint-friendly-formatter' )
69
+ }
70
+ }
71
+ } ) { { / if } }
72
+
15
73
/**
16
74
* List of node_modules to include in webpack bundle
17
75
*
@@ -31,37 +89,10 @@ let rendererConfig = {
31
89
] ,
32
90
module : {
33
91
rules : [
34
- { { #if eslint} }
35
- {
36
- test : / \. ( j s | v u e ) $ / ,
37
- enforce : 'pre' ,
38
- exclude : / n o d e _ m o d u l e s / ,
39
- use : {
40
- loader : 'eslint-loader' ,
41
- options : {
42
- formatter : require ( 'eslint-friendly-formatter' )
43
- }
44
- }
45
- } ,
46
- { { / if } }
47
- { { #if usesass } }
48
- {
49
- test : / \. s c s s $ / ,
50
- use : [ 'vue-style-loader' , 'css-loader' , 'sass-loader' ]
51
- } ,
52
- {
53
- test : / \. s a s s $ / ,
54
- use : [ 'vue-style-loader' , 'css-loader' , 'sass-loader?indentedSyntax' ]
55
- } ,
56
- { { / i f } }
57
- {
58
- test : / \. l e s s $ / ,
59
- use : [ 'vue-style-loader' , 'css-loader' , 'less-loader' ]
60
- } ,
61
- {
62
- test : / \. c s s $ / ,
63
- use : [ 'vue-style-loader' , 'css-loader' ]
64
- } ,
92
+ { { #if eslint} }
93
+ ...( ! isProd ? [ createLintingRule ( ) ] : [ ] ) ,
94
+ { { / if } }
95
+ ...styleLoaders ,
65
96
{
66
97
test : / \. h t m l $ / ,
67
98
use : 'vue-html-loader'
@@ -80,7 +111,7 @@ let rendererConfig = {
80
111
use : {
81
112
loader : 'vue-loader' ,
82
113
options : {
83
- extractCSS : process . env . NODE_ENV === 'production' ,
114
+ extractCSS : isProd ,
84
115
loaders : {
85
116
sass : 'vue-style-loader!css-loader!sass-loader?indentedSyntax=1' ,
86
117
scss : 'vue-style-loader!css-loader!sass-loader' ,
@@ -120,8 +151,8 @@ let rendererConfig = {
120
151
]
121
152
} ,
122
153
node : {
123
- __dirname : process . env . NODE_ENV !== 'production' ,
124
- __filename : process . env . NODE_ENV !== 'production'
154
+ __dirname : ! isProd ,
155
+ __filename : ! isProd
125
156
} ,
126
157
plugins : [
127
158
new VueLoaderPlugin ( ) ,
@@ -134,7 +165,7 @@ let rendererConfig = {
134
165
removeAttributeQuotes : true ,
135
166
removeComments : true
136
167
} ,
137
- nodeModules : process . env . NODE_ENV !== 'production'
168
+ nodeModules : ! isProd
138
169
? path . resolve ( __dirname , '../node_modules' )
139
170
: false
140
171
} ) ,
@@ -159,7 +190,7 @@ let rendererConfig = {
159
190
/**
160
191
* Adjust rendererConfig for development settings
161
192
*/
162
- if ( process . env . NODE_ENV !== 'production' ) {
193
+ if ( ! isProd ) {
163
194
rendererConfig . plugins . push (
164
195
new webpack . DefinePlugin ( {
165
196
'__static' : `"${ path . join ( __dirname , '../static' ) . replace ( / \\ / g, '\\\\' ) } "`
@@ -170,7 +201,7 @@ if (process.env.NODE_ENV !== 'production') {
170
201
/**
171
202
* Adjust rendererConfig for production settings
172
203
*/
173
- if ( process . env . NODE_ENV === 'production' ) {
204
+ if ( isProd ) {
174
205
rendererConfig . devtool = ''
175
206
176
207
rendererConfig . plugins . push (
0 commit comments