@@ -2,39 +2,84 @@ var isDevBuild = process.argv.indexOf('--env.prod') < 0;
2
2
var path = require ( 'path' ) ;
3
3
var webpack = require ( 'webpack' ) ;
4
4
var ExtractTextPlugin = require ( 'extract-text-webpack-plugin' ) ;
5
+ var merge = require ( 'webpack-merge' ) ;
5
6
var extractCSS = new ExtractTextPlugin ( 'vendor.css' ) ;
6
7
7
- module . exports = {
8
- resolve : {
9
- extensions : [ '' , '.js' ]
10
- } ,
8
+ var sharedConfig = {
9
+ resolve : { extensions : [ '' , '.js' ] } ,
11
10
module : {
12
11
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' }
15
14
]
16
15
} ,
17
16
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
+ ] ,
19
32
} ,
20
33
output : {
21
- path : path . join ( __dirname , 'wwwroot' , 'dist' ) ,
22
34
publicPath : '/dist/' ,
23
35
filename : '[name].js' ,
24
36
library : '[name]_[hash]' ,
25
37
} ,
26
38
plugins : [
27
- extractCSS ,
28
39
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 ,
30
56
new webpack . DllPlugin ( {
31
57
path : path . join ( __dirname , 'wwwroot' , 'dist' , '[name]-manifest.json' ) ,
32
58
name : '[name]_[hash]'
33
- } ) ,
34
- new webpack . DefinePlugin ( {
35
- 'process.env.NODE_ENV' : isDevBuild ? '"development"' : '"production"'
36
59
} )
37
60
] . concat ( isDevBuild ? [ ] : [
61
+ new webpack . optimize . OccurenceOrderPlugin ( ) ,
38
62
new webpack . optimize . UglifyJsPlugin ( { compress : { warnings : false } } )
39
63
] )
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