@@ -6,6 +6,7 @@ const ClosureCompilerPlugin = require('webpack-closure-compiler');
6
6
const autoprefixer = require ( 'autoprefixer' ) ;
7
7
const cssnano = require ( 'cssnano' ) ;
8
8
const ForkCheckerPlugin = require ( 'awesome-typescript-loader' ) . ForkCheckerPlugin ;
9
+ const webpackMerge = require ( 'webpack-merge' ) ;
9
10
10
11
// Resolve to the generated applications
11
12
function ngAppResolve ( resolvePath : string ) : string {
@@ -18,34 +19,77 @@ let baseHtmlTemplateConfig = {
18
19
} ;
19
20
20
21
// These are the output
21
- export const webpackOutputOptions = {
22
+ export const webpackOutputOptions : WebpackProgressPluginOutputOptions = {
22
23
colors : true ,
23
24
chunks : true ,
24
25
modules : false ,
25
26
reasons : false ,
26
27
chunkModules : false
27
28
}
28
29
29
- export interface IWebpackDevServerConfigurationOptions {
30
- contentBase ?: string ;
31
- hot ?: boolean ;
32
- historyApiFallback ?: boolean ;
33
- compress ?: boolean ;
34
- proxy ?: { [ key : string ] : string } ;
35
- staticOptions ?: any ;
36
- quiet ?: boolean ;
37
- noInfo ?: boolean ;
38
- lazy ?: boolean ;
39
- filename ?: string ;
40
- watchOptions ?: {
41
- aggregateTimeout ?: number ;
42
- poll ?: number ;
30
+ const webpackTestPartial = {
31
+ module : {
32
+ plugins : [
33
+ new ForkCheckerPlugin ( ) ,
34
+ new HtmlWebpackPlugin ( baseHtmlTemplateConfig ) ,
35
+ ] ,
36
+ preLoaders : [
37
+ {
38
+ test : / \. t s $ / ,
39
+ loader : 'tslint-loader' ,
40
+ exclude : [ 'node_modules' ]
41
+ } ,
42
+ {
43
+ test : / \. j s $ / ,
44
+ loader : 'source-map-loader' ,
45
+ exclude : [
46
+ // these packages have problems with their sourcemaps
47
+ ngAppResolve ( 'node_modules/rxjs' ) ,
48
+ ngAppResolve ( 'node_modules/@angular' )
49
+ ] }
50
+ ] ,
51
+ loaders : [
52
+ {
53
+ test : / \. t s $ / ,
54
+ loaders : [
55
+ {
56
+ loader : 'awesome-typescript-loader' ,
57
+ query : {
58
+ useWebpackText : true ,
59
+ tsconfig : ngAppResolve ( './src/tsconfig.json' ) ,
60
+ resolveGlobs : false ,
61
+ module : "es2015" ,
62
+ target : "es5" ,
63
+ library : 'es6' ,
64
+ useForkChecker : true ,
65
+ removeComments : true
66
+ }
67
+ } ,
68
+ {
69
+ loader : 'angular2-template-loader'
70
+ }
71
+ ] ,
72
+ exclude : [ / \. ( s p e c | e 2 e ) \. t s $ / ]
73
+ } ,
74
+ { test : / \. j s o n $ / , loader : 'json-loader' , exclude : [ ngAppResolve ( 'src/index.html' ) ] } ,
75
+ { test : / \. c s s $ / , loader : 'raw-loader' , exclude : [ ngAppResolve ( 'src/index.html' ) ] } ,
76
+ { test : / \. h t m l $ / , loader : 'raw-loader' , exclude : [ ngAppResolve ( 'src/index.html' ) ] }
77
+ ]
43
78
} ,
44
- publicPath ?: string ;
45
- headers ?: { [ key :string ] : string } ;
46
- stats ?: { colors : boolean ; } ;
47
- inline : boolean ;
48
- }
79
+ tslint : {
80
+ emitErrors : false ,
81
+ failOnHint : false ,
82
+ resourcePath : 'src'
83
+ } ,
84
+ node : {
85
+ global : 'window' ,
86
+ process : false ,
87
+ crypto : 'empty' ,
88
+ module : false ,
89
+ clearImmediate : false ,
90
+ setImmediate : false
91
+ }
92
+ } ;
49
93
50
94
// Webpack Configuration Object
51
95
// Used in build.ts
@@ -62,20 +106,12 @@ export const webpackCommonConfig = {
62
106
path : ngAppResolve ( './dist' ) ,
63
107
filename : '[name].bundle.js'
64
108
} ,
65
- devtool : 'cheap-module-source-map ' ,
109
+ devtool : 'sourcemap ' ,
66
110
module : {
67
111
loaders : [
68
112
{
69
113
test : / \. t s $ / ,
70
114
loaders : [
71
- // {
72
- // loader: 'babel-loader', //TODO: Remove Babel once support for lib: for typescript@next
73
- // query: {
74
- // presets: [
75
- // 'babel-preset-es2015-webpack'
76
- // ].map(require.resolve)
77
- // }
78
- // },
79
115
{
80
116
loader : 'awesome-typescript-loader' ,
81
117
query : {
@@ -94,37 +130,13 @@ export const webpackCommonConfig = {
94
130
] ,
95
131
exclude : [ / \. ( s p e c | e 2 e ) \. t s $ / ]
96
132
} ,
97
- {
98
- test : / \. j s o n $ / ,
99
- loader : 'json-loader'
100
- } ,
101
- {
102
- test : / \. c s s $ / ,
103
- loaders : [ 'raw-loader' , 'postcss-loader' ]
104
- } ,
105
- {
106
- test :/ \. s t y l $ / ,
107
- loaders : [ 'raw-loader' , 'postcss-loader' , 'stylus-loader' ]
108
- } ,
109
- {
110
- test :/ \. l e s s $ / ,
111
- loaders : [ 'raw-loader' , 'postcss-loader' , 'less-loader' ]
112
- } ,
113
- {
114
- test :/ \. s c s s $ / ,
115
- loaders : [ 'raw-loader' , 'postcss-loader' , 'sass-loader' ]
116
- } ,
117
- //
118
- // Asset loaders
119
- //
120
- {
121
- test : / \. ( j p g | p n g ) $ / ,
122
- loader : 'url-loader?limit=25000' , // Only inline for sizes <= 25000
123
- } ,
124
- {
125
- test : / \. h t m l $ / ,
126
- loader : 'raw-loader'
127
- }
133
+ { test : / \. j s o n $ / , loader : 'json-loader' } ,
134
+ { test : / \. c s s $ / , loaders : [ 'raw-loader' , 'postcss-loader' ] } ,
135
+ { test : / \. s t y l $ / , loaders : [ 'raw-loader' , 'postcss-loader' , 'stylus-loader' ] } ,
136
+ { test : / \. l e s s $ / , loaders : [ 'raw-loader' , 'postcss-loader' , 'less-loader' ] } ,
137
+ { test : / \. s c s s $ / , loaders : [ 'raw-loader' , 'postcss-loader' , 'sass-loader' ] } ,
138
+ { test : / \. ( j p g | p n g ) $ / , loader : 'url-loader?limit=128000' } ,
139
+ { test : / \. h t m l $ / , loader : 'raw-loader' }
128
140
]
129
141
} ,
130
142
postcss : ( ) => {
@@ -134,15 +146,24 @@ export const webpackCommonConfig = {
134
146
} ,
135
147
plugins : [
136
148
new ForkCheckerPlugin ( ) ,
149
+ new HtmlWebpackPlugin ( baseHtmlTemplateConfig ) ,
137
150
new webpack . optimize . CommonsChunkPlugin ( {
138
151
name : [ 'polyfills' , 'vendor' ] . reverse ( )
139
152
} ) ,
140
- new HtmlWebpackPlugin ( baseHtmlTemplateConfig ) ,
141
153
new CopyWebpackPlugin ( [ { from : ngAppResolve ( './public' ) , to : ngAppResolve ( './dist/public' ) } ] )
142
154
] ,
143
155
resolve : {
144
156
extensions : [ '' , '.ts' , '.js' ] ,
145
157
root : ngAppResolve ( './src' )
146
- // modulesDirectories: ['node_modules']
147
158
}
148
159
} ;
160
+
161
+ export const webpackTestConfig = webpackMerge ( webpackTestPartial , webpackCommonConfig ) ;
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+
0 commit comments