@@ -2,39 +2,84 @@ var isDevBuild = process.argv.indexOf('--env.prod') < 0;
22var path = require ( 'path' ) ;
33var webpack = require ( 'webpack' ) ;
44var ExtractTextPlugin = require ( 'extract-text-webpack-plugin' ) ;
5+ var merge = require ( 'webpack-merge' ) ;
56var extractCSS = new ExtractTextPlugin ( 'vendor.css' ) ;
67
7- module . exports = {
8- resolve : {
9- extensions : [ '' , '.js' ]
10- } ,
8+ var sharedConfig = {
9+ resolve : { extensions : [ '' , '.js' ] } ,
1110 module : {
1211 loaders : [
13- { test : / \. ( p n g | w o f f | w o f f 2 | e o t | t t f | s v g ) ( \? | $ ) / , loader : 'url -loader?limit=100000' } ,
14- { test : / \. c s s ( \? | $ ) / , loader : extractCSS . extract ( [ 'css -loader' ] ) }
12+ { test : / \. j s o n $ / , loader : require . resolve ( 'json -loader' ) } ,
13+ { test : / \. ( p n g | w o f f | w o f f 2 | e o t | t t f | s v g ) ( \? | $ ) / , loader : 'url -loader?limit=100000' }
1514 ]
1615 } ,
1716 entry : {
18- vendor : [ 'bootstrap' , 'bootstrap/dist/css/bootstrap.css' , 'domain-task' , 'event-source-polyfill' , 'react' , 'react-dom' , 'react-router' , 'redux' , 'redux-thunk' , 'react-router-redux' , 'style-loader' , 'jquery' ] ,
17+ vendor : [
18+ 'bootstrap' ,
19+ 'bootstrap/dist/css/bootstrap.css' ,
20+ 'domain-task' ,
21+ 'event-source-polyfill' ,
22+ 'react' ,
23+ 'react-dom' ,
24+ 'react-router' ,
25+ 'react-redux' ,
26+ 'redux' ,
27+ 'redux-thunk' ,
28+ 'react-router-redux' ,
29+ 'style-loader' ,
30+ 'jquery'
31+ ] ,
1932 } ,
2033 output : {
21- path : path . join ( __dirname , 'wwwroot' , 'dist' ) ,
2234 publicPath : '/dist/' ,
2335 filename : '[name].js' ,
2436 library : '[name]_[hash]' ,
2537 } ,
2638 plugins : [
27- extractCSS ,
2839 new webpack . ProvidePlugin ( { $ : 'jquery' , jQuery : 'jquery' } ) , // Maps these identifiers to the jQuery package (because Bootstrap expects it to be a global variable)
29- new webpack . optimize . OccurenceOrderPlugin ( ) ,
40+ new webpack . NormalModuleReplacementPlugin ( / \/ i c o n v - l o a d e r $ / , require . resolve ( 'node-noop' ) ) , // Workaround for https://github.com/andris9/encoding/issues/16
41+ new webpack . DefinePlugin ( {
42+ 'process.env.NODE_ENV' : isDevBuild ? '"development"' : '"production"'
43+ } )
44+ ]
45+ } ;
46+
47+ var clientBundleConfig = merge ( sharedConfig , {
48+ output : { path : path . join ( __dirname , 'wwwroot' , 'dist' ) } ,
49+ module : {
50+ loaders : [
51+ { test : / \. c s s ( \? | $ ) / , loader : extractCSS . extract ( [ 'css-loader' ] ) }
52+ ]
53+ } ,
54+ plugins : [
55+ extractCSS ,
3056 new webpack . DllPlugin ( {
3157 path : path . join ( __dirname , 'wwwroot' , 'dist' , '[name]-manifest.json' ) ,
3258 name : '[name]_[hash]'
33- } ) ,
34- new webpack . DefinePlugin ( {
35- 'process.env.NODE_ENV' : isDevBuild ? '"development"' : '"production"'
3659 } )
3760 ] . concat ( isDevBuild ? [ ] : [
61+ new webpack . optimize . OccurenceOrderPlugin ( ) ,
3862 new webpack . optimize . UglifyJsPlugin ( { compress : { warnings : false } } )
3963 ] )
40- } ;
64+ } ) ;
65+
66+ var serverBundleConfig = merge ( sharedConfig , {
67+ target : 'node' ,
68+ resolve : { packageMains : [ 'main' ] } ,
69+ output : {
70+ path : path . join ( __dirname , 'ClientApp' , 'dist' ) ,
71+ libraryTarget : 'commonjs2' ,
72+ } ,
73+ module : {
74+ loaders : [ { test : / \. c s s ( \? | $ ) / , loader : 'css-loader' } ]
75+ } ,
76+ entry : { vendor : [ 'aspnet-prerendering' , 'react-dom/server' ] } ,
77+ plugins : [
78+ new webpack . DllPlugin ( {
79+ path : path . join ( __dirname , 'ClientApp' , 'dist' , '[name]-manifest.json' ) ,
80+ name : '[name]_[hash]'
81+ } )
82+ ]
83+ } ) ;
84+
85+ module . exports = [ clientBundleConfig , serverBundleConfig ] ;
0 commit comments