1- var path = require ( 'path' ) ;
2- var webpack = require ( 'webpack' ) ;
3- var HtmlWebpackPlugin = require ( 'html-webpack-plugin' ) ;
1+ let path = require ( 'path' ) ;
2+ let HtmlWebpackPlugin = require ( 'html-webpack-plugin' ) ;
3+ let MiniCssExtractPlugin = require ( 'mini-css-extract-plugin' ) ;
4+ let webpack = require ( 'webpack' ) ;
45
5- var basePath = __dirname ;
6+ let basePath = __dirname ;
67
78module . exports = {
89 context : path . join ( basePath , "src" ) ,
910 resolve : {
10- extensions : [ '' , ' .js', '.jsx' ]
11+ extensions : [ '.js' , '.jsx' ]
1112 } ,
1213 entry : [
1314 './main.jsx' ,
1415 '../node_modules/bootstrap/dist/css/bootstrap.css'
1516 ] ,
1617 output : {
1718 path : path . join ( basePath , 'dist' ) ,
18- filename : 'bundle.js'
19+ filename : 'bundle.js' ,
1920 } ,
2021 devtool : 'source-map' ,
2122 devServer : {
22- contentBase : './dist' , //Content base
23- inline : true , //Enable watch and live reload
23+ contentBase : './dist' , // Content base
24+ inline : true , // Enable watch and live reload
2425 host : 'localhost' ,
2526 port : 8080 ,
2627 stats : 'errors-only'
27- } ,
28+ } ,
2829 module : {
29- loaders : [
30+ rules : [
3031 {
31- test : / \. j s x $ / ,
32- loader : "babel-loader" ,
32+ test : / \. j s x ? $ / ,
3333 exclude : / n o d e _ m o d u l e s / ,
34- query : {
35- plugins : [ 'transform-runtime' ] ,
36- presets : [ 'es2015' , 'react' ]
37- }
38- } ,
39- {
40- test : / \. j s $ / ,
4134 loader : 'babel-loader' ,
42- exclude : / n o d e _ m o d u l e s / ,
43- query : {
44- presets : [ 'es2015' ]
45- }
4635 } ,
4736 {
48- test : / \. c s s $ / ,
49- loader : 'style- loader! css-loader'
37+ test : / \. c s s $ / ,
38+ use : [ MiniCssExtractPlugin . loader , " css-loader" ]
5039 } ,
51- // Loading glyphicons => https://github.com/gowravshekar/bootstrap-webpack
52- // Using here url-loader and file-loader
5340 {
54- test : / \. ( w o f f | w o f f 2 ) ( \? v = \d + \. \d + \. \d + ) ? $ / ,
55- loader : 'url?limit=10000&mimetype=application/font-woff'
56- } ,
57- {
58- test : / \. t t f ( \? v = \d + \. \d + \. \d + ) ? $ / ,
59- loader : 'url?limit=10000&mimetype=application/octet-stream'
60- } ,
61- {
62- test : / \. e o t ( \? v = \d + \. \d + \. \d + ) ? $ / ,
63- loader : 'file'
41+ test : / \. ( p n g | j p g | g i f | s v g ) $ / ,
42+ loader : 'file-loader' ,
43+ options : {
44+ name : 'assets/img/[name].[ext]?[hash]'
45+ }
6446 } ,
65- {
66- test : / \. s v g ( \? v = \d + \. \d + \. \d + ) ? $ / ,
67- loader : 'url?limit=10000&mimetype=image/svg+xml'
68- }
69- ]
47+ ] ,
7048 } ,
7149 plugins : [
72- // Generate index.html in /dist => https://github.com/ampedandwired/html-webpack-plugin
50+ //Generate index.html in /dist => https://github.com/ampedandwired/html-webpack-plugin
7351 new HtmlWebpackPlugin ( {
74- filename : 'index.html' , // Name of file in ./dist/
75- template : 'index.html' , // Name of template in ./src
76- hash : true
77- } )
78- ]
79- }
52+ filename : 'index.html' , //Name of file in ./dist/
53+ template : 'index.html' , //Name of template in ./src
54+ hash : true ,
55+ } ) ,
56+ new MiniCssExtractPlugin ( {
57+ filename : "[name].css" ,
58+ chunkFilename : "[id].css"
59+ } ) ,
60+ ] ,
61+ } ;
0 commit comments