@@ -13,102 +13,108 @@ const MiniCssExtractPlugin = require("mini-css-extract-plugin");
1313 * ~knoxfighter
1414 */
1515const FixStyleOnlyEntriesPlugin = require ( "webpack-fix-style-only-entries" ) ;
16- const isProduction = process . env . NODE_ENV == 'production' ;
1716
18- module . exports = {
19- entry : {
20- bundle : './ui/index.js' ,
21- style : './ui/index.scss'
22- } ,
23- output : {
24- filename : '[name].js' ,
25- path : path . resolve ( __dirname , 'app' ) ,
26- publicPath : ""
27- } ,
28- resolve : {
29- alias : {
30- Utilities : path . resolve ( 'ui/js/' )
17+ module . exports = ( env , argv ) => {
18+ const isProduction = argv . mode == 'production' ;
19+
20+ return {
21+ entry : {
22+ bundle : './ui/index.js' ,
23+ style : './ui/index.scss'
3124 } ,
32- extensions : [ '.js' , '.json' , '.jsx' ]
33- } ,
34- devtool : ( isProduction ) ? "none" : "source-map" ,
35- module : {
36- rules : [
37- {
38- test : / \. j s x ? $ / ,
39- exclude : / n o d e _ m o d u l e s / ,
40- use : {
41- loader : 'babel-loader'
42- }
43- } ,
44- {
45- test : / \. s c s s $ / ,
46- use : [
47- MiniCssExtractPlugin . loader ,
48- {
49- loader : "css-loader" ,
50- options : {
51- "sourceMap" : ! isProduction ,
52- }
53- } ,
54- "resolve-url-loader" ,
55- "sass-loader?sourceMap"
56- ]
25+ output : {
26+ filename : '[name].js' ,
27+ path : path . resolve ( __dirname , 'app' ) ,
28+ publicPath : ""
29+ } ,
30+ resolve : {
31+ alias : {
32+ Utilities : path . resolve ( 'ui/js/' )
5733 } ,
58- {
59- test : / ( \. ( p n g | j p e ? g | g i f ) $ | ^ ( (? ! f o n t ) .) * \. s v g $ ) / ,
60- loaders : [
61- {
62- loader : "file-loader" ,
63- options : {
64- name : loader_path => {
65- if ( ! / n o d e _ m o d u l e s / . test ( loader_path ) ) {
66- return "/images/[name].[ext]?[hash]" ;
67- }
34+ extensions : [ '.js' , '.json' , '.jsx' ]
35+ } ,
36+ devtool : ( isProduction ) ? "none" : "source-map" ,
37+ module : {
38+ rules : [
39+ {
40+ test : / \. j s x ? $ / ,
41+ exclude : / n o d e _ m o d u l e s / ,
42+ use : {
43+ loader : 'babel-loader'
44+ }
45+ } ,
46+ {
47+ test : / \. s c s s $ / ,
48+ use : [
49+ MiniCssExtractPlugin . loader ,
50+ {
51+ loader : "css-loader" ,
52+ options : {
53+ "sourceMap" : ! isProduction ,
54+ }
55+ } ,
56+ "resolve-url-loader" ,
57+ "sass-loader?sourceMap"
58+ ]
59+ } ,
60+ {
61+ test : / ( \. ( p n g | j p e ? g | g i f ) $ | ^ ( (? ! f o n t ) .) * \. s v g $ ) / ,
62+ loaders : [
63+ {
64+ loader : "file-loader" ,
65+ options : {
66+ name : loader_path => {
67+ if ( ! / n o d e _ m o d u l e s / . test ( loader_path ) ) {
68+ return "/images/[name].[ext]?[hash]" ;
69+ }
6870
69- return (
70- "/images/vendor/" +
71- loader_path . replace ( / \\ / g, "/" )
72- . replace ( / ( ( .* ( n o d e _ m o d u l e s ) ) | i m a g e s | i m a g e | i m g | a s s e t s ) \/ / g, '' ) +
73- '?[hash]'
74- ) ;
75- } ,
71+ return (
72+ "/images/vendor/" +
73+ loader_path . replace ( / \\ / g, "/" )
74+ . replace ( / ( ( .* ( n o d e _ m o d u l e s ) ) | i m a g e s | i m a g e | i m g | a s s e t s ) \/ / g, '' ) +
75+ '?[hash]'
76+ ) ;
77+ } ,
78+ }
7679 }
77- }
78- ]
79- } ,
80- {
81- test : / ( \. ( w o f f 2 ? | t t f | e o t | o t f ) $ | f o n t .* \. s v g $ ) / ,
82- loaders : [
83- {
84- loader : "file-loader" ,
85- options : {
86- name : loader_path => {
87- if ( ! / n o d e _ m o d u l e s / . test ( loader_path ) ) {
88- return '/fonts/[name].[ext]?[hash]' ;
89- }
80+ ]
81+ } ,
82+ {
83+ test : / ( \. ( w o f f 2 ? | t t f | e o t | o t f ) $ | f o n t .* \. s v g $ ) / ,
84+ loaders : [
85+ {
86+ loader : "file-loader" ,
87+ options : {
88+ name : loader_path => {
89+ if ( ! / n o d e _ m o d u l e s / . test ( loader_path ) ) {
90+ return '/fonts/[name].[ext]?[hash]' ;
91+ }
9092
91- return (
92- '/fonts/vendor/' +
93- loader_path
94- . replace ( / \\ / g, '/' )
95- . replace ( / ( ( .* ( n o d e _ m o d u l e s ) ) | f o n t s | f o n t | a s s e t s ) \/ / g, '' ) +
96- '?[hash]'
97- ) ;
98- } ,
93+ return (
94+ '/fonts/vendor/' +
95+ loader_path
96+ . replace ( / \\ / g, '/' )
97+ . replace ( / ( ( .* ( n o d e _ m o d u l e s ) ) | f o n t s | f o n t | a s s e t s ) \/ / g, '' ) +
98+ '?[hash]'
99+ ) ;
100+ } ,
101+ }
99102 }
100- }
101- ]
102- }
103+ ]
104+ }
105+ ]
106+ } ,
107+ performance : {
108+ hints : false
109+ } ,
110+ stats : {
111+ children : false
112+ } ,
113+ plugins : [
114+ new FixStyleOnlyEntriesPlugin ( ) ,
115+ new MiniCssExtractPlugin ( {
116+ filename : "[name].css"
117+ } )
103118 ]
104- } ,
105- performance : {
106- hints : false
107- } ,
108- plugins : [
109- new FixStyleOnlyEntriesPlugin ( ) ,
110- new MiniCssExtractPlugin ( {
111- filename : "[name].css"
112- } )
113- ]
119+ }
114120}
0 commit comments