@@ -6,7 +6,7 @@ const path = require('path')
66const { dependencies } = require ( '../package.json' )
77const webpack = require ( 'webpack' )
88
9- const BabiliWebpackPlugin = require ( 'babili -webpack-plugin' )
9+ const TerserPlugin = require ( 'terser -webpack-plugin' )
1010const CopyWebpackPlugin = require ( 'copy-webpack-plugin' )
1111const MiniCssExtractPlugin = require ( 'mini-css-extract-plugin' )
1212const HtmlWebpackPlugin = require ( 'html-webpack-plugin' )
@@ -32,100 +32,100 @@ let rendererConfig = {
3232 module : {
3333 rules : [
3434 { { #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- }
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' )
4443 }
45- } ,
44+ }
45+ } ,
4646 { { / if } }
4747 { { #if_eq csspreprocessor 'sass '} }
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- } ,
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+ } ,
5656 { { / i f _ e q } }
5757 { { #if_eq csspreprocessor 'less' } }
58- {
59- test : / \. l e s s $ / ,
60- use : [ 'vue-style-loader' , 'css-loader' , 'less-loader' ]
61- } ,
58+ {
59+ test : / \. l e s s $ / ,
60+ use : [ 'vue-style-loader' , 'css-loader' , 'less-loader' ]
61+ } ,
6262 { { / i f _ e q } }
6363 { { #if_eq csspreprocessor 'stylus' } }
64- {
65- test : / \. s t y l $ / ,
66- use : [ 'vue-style-loader' , 'css-loader' , 'stylus-loader' ]
67- } ,
64+ {
65+ test : / \. s t y l $ / ,
66+ use : [ 'vue-style-loader' , 'css-loader' , 'stylus-loader' ]
67+ } ,
6868 { { / i f _ e q } }
69- {
70- test : / \. c s s $ / ,
71- use : [ 'vue-style-loader' , 'css-loader' ]
72- } ,
73- {
74- test : / \. h t m l $ / ,
75- use : 'vue-html-loader'
76- } ,
77- {
78- test : / \. j s $ / ,
79- use : 'babel-loader' ,
80- exclude : / n o d e _ m o d u l e s /
81- } ,
82- {
83- test : / \. n o d e $ / ,
84- use : 'node-loader'
85- } ,
86- {
87- test : / \. v u e $ / ,
88- use : {
89- loader : 'vue-loader' ,
90- options : {
91- extractCSS : process . env . NODE_ENV === 'production' ,
92- loaders : {
93- sass : 'vue-style-loader!css-loader!sass-loader?indentedSyntax=1' ,
94- scss : 'vue-style-loader!css-loader!sass-loader' ,
95- less : 'vue-style-loader!css-loader!less-loader' ,
96- styl : 'vue-style-loader!css-loader!stylus-loader'
97- }
98- }
99- }
100- } ,
101- {
102- test : / \. ( p n g | j p e ? g | g i f | s v g ) ( \? .* ) ? $ / ,
103- use : {
104- loader : 'url-loader' ,
105- query : {
106- limit : 10000 ,
107- name : 'imgs/[name]--[folder].[ext]'
69+ {
70+ test : / \. c s s $ / ,
71+ use : [ 'vue-style-loader' , 'css-loader' ]
72+ } ,
73+ {
74+ test : / \. h t m l $ / ,
75+ use : 'vue-html-loader'
76+ } ,
77+ {
78+ test : / \. j s $ / ,
79+ use : 'babel-loader' ,
80+ exclude : / n o d e _ m o d u l e s /
81+ } ,
82+ {
83+ test : / \. n o d e $ / ,
84+ use : 'node-loader'
85+ } ,
86+ {
87+ test : / \. v u e $ / ,
88+ use : {
89+ loader : 'vue-loader' ,
90+ options : {
91+ extractCSS : process . env . NODE_ENV === 'production' ,
92+ loaders : {
93+ sass : 'vue-style-loader!css-loader!sass-loader?indentedSyntax=1' ,
94+ scss : 'vue-style-loader!css-loader!sass-loader' ,
95+ less : 'vue-style-loader!css-loader!less-loader' ,
96+ styl : 'vue-style-loader!css-loader!stylus-loader'
10897 }
10998 }
110- } ,
111- {
112- test : / \. ( m p 4 | w e b m | o g g | m p 3 | w a v | f l a c | a a c ) ( \? .* ) ? $ / ,
99+ }
100+ } ,
101+ {
102+ test : / \. ( p n g | j p e ? g | g i f | s v g ) ( \? .* ) ? $ / ,
103+ use : {
113104 loader : 'url-loader' ,
114- options : {
105+ query : {
115106 limit : 10000 ,
116- name : 'media /[name]--[folder].[ext]'
107+ name : 'imgs /[name]--[folder].[ext]'
117108 }
118- } ,
119- {
120- test : / \. ( w o f f 2 ? | e o t | t t f | o t f ) ( \? .* ) ? $ / ,
121- use : {
122- loader : 'url-loader' ,
123- query : {
124- limit : 10000 ,
125- name : 'fonts/[name]--[folder].[ext]'
126- }
109+ }
110+ } ,
111+ {
112+ test : / \. ( m p 4 | w e b m | o g g | m p 3 | w a v | f l a c | a a c ) ( \? .* ) ? $ / ,
113+ loader : 'url-loader' ,
114+ options : {
115+ limit : 10000 ,
116+ name : 'media/[name]--[folder].[ext]'
117+ }
118+ } ,
119+ {
120+ test : / \. ( w o f f 2 ? | e o t | t t f | o t f ) ( \? .* ) ? $ / ,
121+ use : {
122+ loader : 'url-loader' ,
123+ query : {
124+ limit : 10000 ,
125+ name : 'fonts/[name]--[folder].[ext]'
127126 }
128127 }
128+ }
129129 ]
130130 } ,
131131 node : {
@@ -147,9 +147,11 @@ let rendererConfig = {
147147 ? path . resolve ( __dirname , '../node_modules' )
148148 : false
149149 } ) ,
150- new webpack . HotModuleReplacementPlugin ( ) ,
151- new webpack . NoEmitOnErrorsPlugin ( )
150+ new webpack . HotModuleReplacementPlugin ( )
152151 ] ,
152+ optimization : {
153+ noEmitOnErrors : true // NoEmitOnErrorsPlugin
154+ } ,
153155 output : {
154156 filename : '[name].js' ,
155157 libraryTarget : 'commonjs2' ,
@@ -182,15 +184,23 @@ if (process.env.NODE_ENV !== 'production') {
182184if ( process . env . NODE_ENV === 'production' ) {
183185 rendererConfig . devtool = ''
184186
187+ rendererConfig . optimization = Object . assign ( rendererConfig . optimization , {
188+ minimize : true ,
189+ minimizer : [ new TerserPlugin ( ) ]
190+ } )
191+
185192 rendererConfig . plugins . push (
186- new BabiliWebpackPlugin ( ) ,
187- new CopyWebpackPlugin ( [
188- {
189- from : path . join ( __dirname , '../static' ) ,
190- to : path . join ( __dirname , '../dist/electron/static' ) ,
191- ignore : [ '.*' ]
192- }
193- ] ) ,
193+ new CopyWebpackPlugin ( {
194+ patterns : [
195+ {
196+ from : path . join ( __dirname , '../static' ) ,
197+ to : path . join ( __dirname , '../dist/electron/static' ) ,
198+ globOptions : {
199+ ignore : [ '.*' ]
200+ }
201+ }
202+ ]
203+ } ) ,
194204 new webpack . DefinePlugin ( {
195205 'process.env.NODE_ENV' : '"production"'
196206 } ) ,
0 commit comments