11var isDevBuild = process . argv . indexOf ( '--env.prod' ) < 0 ;
22var path = require ( 'path' ) ;
33var webpack = require ( 'webpack' ) ;
4+ var nodeExternals = require ( 'webpack-node-externals' ) ;
5+ var merge = require ( 'webpack-merge' ) ;
6+ var allFilenamesExceptJavaScript = / \. (? ! j s ( \? | $ ) ) ( [ ^ . ] + ( \? | $ ) ) / ;
47
5- module . exports = {
6- devtool : isDevBuild ? 'inline-source-map' : null ,
8+ // Configuration in common to both client-side and server-side bundles
9+ var sharedConfig = {
710 resolve : { extensions : [ '' , '.js' , '.ts' ] } ,
8- entry : { main : [ './ClientApp/boot-client.ts' ] } ,
11+ output : {
12+ filename : '[name].js' ,
13+ publicPath : '/dist/' // Webpack dev middleware, if enabled, handles requests for this URL prefix
14+ } ,
915 module : {
1016 loaders : [
1117 { test : / \. t s $ / , include : / C l i e n t A p p / , loader : 'ts' , query : { silent : true } } ,
1218 { test : / \. h t m l $ / , loader : 'raw' } ,
13- { test : / \. c s s / , loader : 'to-string!css' } ,
19+ { test : / \. c s s $ / , loader : 'to-string!css' } ,
1420 { test : / \. ( p n g | j p g | j p e g | g i f | s v g ) $ / , loader : 'url' , query : { limit : 25000 } }
1521 ]
16- } ,
17- output : {
18- path : path . join ( __dirname , 'wwwroot' , 'dist' ) ,
19- filename : '[name].js' ,
20- publicPath : '/dist/'
21- } ,
22+ }
23+ } ;
24+
25+ // Configuration for client-side bundle suitable for running in browsers
26+ var clientBundleConfig = merge ( sharedConfig , {
27+ entry : { 'main-client' : './ClientApp/boot-client.ts' } ,
28+ output : { path : path . join ( __dirname , './wwwroot/dist' ) } ,
29+ devtool : isDevBuild ? 'inline-source-map' : null ,
2230 plugins : [
2331 new webpack . DllReferencePlugin ( {
2432 context : __dirname ,
@@ -29,4 +37,18 @@ module.exports = {
2937 new webpack . optimize . OccurenceOrderPlugin ( ) ,
3038 new webpack . optimize . UglifyJsPlugin ( )
3139 ] )
32- } ;
40+ } ) ;
41+
42+ // Configuration for server-side (prerendering) bundle suitable for running in Node
43+ var serverBundleConfig = merge ( sharedConfig , {
44+ entry : { 'main-server' : './ClientApp/boot-server.ts' } ,
45+ output : {
46+ libraryTarget : 'commonjs' ,
47+ path : path . join ( __dirname , './ClientApp/dist' )
48+ } ,
49+ target : 'node' ,
50+ devtool : 'inline-source-map' ,
51+ externals : [ nodeExternals ( { whitelist : [ allFilenamesExceptJavaScript ] } ) ] // Don't bundle .js files from node_modules
52+ } ) ;
53+
54+ module . exports = [ clientBundleConfig , serverBundleConfig ] ;
0 commit comments