33/*
44 * Helper: root(), and rootDir() are defined at the bottom
55 */
6- var path = require ( 'path' ) ;
7- var zlib = require ( 'zlib' ) ;
6+ var helpers = require ( './helpers' ) ;
87// Webpack Plugins
98var webpack = require ( 'webpack' ) ;
109var ProvidePlugin = require ( 'webpack/lib/ProvidePlugin' ) ;
@@ -32,11 +31,12 @@ var metadata = {
3231/*
3332 * Config
3433 */
35- module . exports = {
34+ module . exports = helpers . validate ( {
3635 // static data for index.html
3736 metadata : metadata ,
38- // for faster builds use 'eval'
37+
3938 devtool : 'source-map' ,
39+ cache : false ,
4040 debug : false ,
4141
4242 entry : {
@@ -46,7 +46,7 @@ module.exports = {
4646
4747 // Config for our build files
4848 output : {
49- path : root ( 'dist' ) ,
49+ path : helpers . root ( 'dist' ) ,
5050 filename : '[name].[chunkhash].bundle.js' ,
5151 sourceMapFilename : '[name].[chunkhash].bundle.map' ,
5252 chunkFilename : '[id].[chunkhash].chunk.js'
@@ -55,7 +55,7 @@ module.exports = {
5555 resolve : {
5656 cache : false ,
5757 // ensure loader extensions match
58- extensions : prepend ( [ '.ts' , '.js ', '.json' , '.css' , '.html' ] , '.async' ) // ensure .async.ts etc also works
58+ extensions : [ '' , '.ts ', '.js' ]
5959 } ,
6060
6161 module : {
@@ -64,24 +64,19 @@ module.exports = {
6464 test : / \. t s $ / ,
6565 loader : 'tslint-loader' ,
6666 exclude : [
67- root ( 'node_modules' )
67+ helpers . root ( 'node_modules' )
6868 ]
6969 } ,
7070 {
7171 test : / \. j s $ / ,
72- loader : " source-map-loader" ,
72+ loader : ' source-map-loader' ,
7373 exclude : [
74- root ( 'node_modules/rxjs' )
74+ helpers . root ( 'node_modules/rxjs' )
7575 ]
7676 }
7777 ] ,
7878 loaders : [
7979 // Support Angular 2 async routes via .async.ts
80- {
81- test : / \. a s y n c \. t s $ / ,
82- loaders : [ 'es6-promise-loader' , 'ts-loader' ] ,
83- exclude : [ / \. ( s p e c | e 2 e ) \. t s $ / ]
84- } ,
8580 // Support for .ts files.
8681 {
8782 test : / \. t s $ / ,
@@ -93,19 +88,32 @@ module.exports = {
9388 'noEmitHelpers' : true ,
9489 }
9590 } ,
96- exclude : [ / \. ( s p e c | e 2 e | a s y n c ) \. t s $ / ]
91+ exclude : [
92+ / \. ( s p e c | e 2 e ) \. t s $ /
93+ ]
9794 } ,
9895
9996 // Support for *.json files.
100- { test : / \. j s o n $ / , loader : 'json-loader' } ,
97+ {
98+ test : / \. j s o n $ / ,
99+ loader : 'json-loader'
100+ } ,
101101
102102 // Support for CSS as raw text
103- { test : / \. c s s $ / , loader : 'raw-loader' } ,
103+ {
104+ test : / \. c s s $ / ,
105+ loader : 'raw-loader'
106+ } ,
104107
105108 // support for .html as raw text
106- { test : / \. h t m l $ / , loader : 'raw-loader' , exclude : [ root ( 'src/index.html' ) ] }
109+ {
110+ test : / \. h t m l $ / ,
111+ loader : 'raw-loader' ,
112+ exclude : [
113+ helpers . root ( 'src/index.html' )
114+ ]
115+ }
107116
108- // if you add a loader include the file extension
109117 ]
110118 } ,
111119
@@ -158,13 +166,13 @@ module.exports = {
158166 // TODO(mastertinner): enable mangling as soon as angular2 beta.4 is out
159167 // mangle: { screw_ie8 : true },//prod
160168 mangle : false ,
161- compress : { screw_ie8 : true } , //prod
169+ compress : { screw_ie8 : true } , //prod
162170 comments : false //prod
163171
164172 } ) ,
165173 // include uglify in production
166174 new CompressionPlugin ( {
167- algorithm : gzipMaxLevel ,
175+ algorithm : helpers . gzipMaxLevel ,
168176 regExp : / \. c s s $ | \. h t m l $ | \. j s $ | \. m a p $ / ,
169177 threshold : 2 * 1024
170178 } )
@@ -185,29 +193,4 @@ module.exports = {
185193 clearImmediate : false ,
186194 setImmediate : false
187195 }
188- } ;
189-
190- // Helper functions
191- function gzipMaxLevel ( buffer , callback ) {
192- return zlib [ 'gzip' ] ( buffer , { level : 9 } , callback )
193- }
194-
195- function root ( args ) {
196- args = Array . prototype . slice . call ( arguments , 0 ) ;
197- return path . join . apply ( path , [ __dirname ] . concat ( args ) ) ;
198- }
199-
200- function rootNode ( args ) {
201- args = Array . prototype . slice . call ( arguments , 0 ) ;
202- return root . apply ( path , [ 'node_modules' ] . concat ( args ) ) ;
203- }
204-
205- function prepend ( extensions , args ) {
206- args = args || [ ] ;
207- if ( ! Array . isArray ( args ) ) { args = [ args ] }
208- return extensions . reduce ( function ( memo , val ) {
209- return memo . concat ( val , args . map ( function ( prefix ) {
210- return prefix + val
211- } ) ) ;
212- } , [ '' ] ) ;
213- }
196+ } ) ;
0 commit comments