@@ -26,13 +26,10 @@ const path = require('path');
26
26
const clone = require ( 'gulp-clone' ) ;
27
27
const webpack = require ( 'webpack' ) ;
28
28
const webpackStream = require ( 'webpack-stream' ) ;
29
- const named = require ( 'vinyl-named' ) ;
30
29
const sourcemaps = require ( 'gulp-sourcemaps' ) ;
31
30
const concat = require ( 'gulp-concat' ) ;
32
31
const replace = require ( 'gulp-replace' ) ;
33
- const uglify = require ( 'gulp-uglify' ) ;
34
32
const gulpFile = require ( 'gulp-file' ) ;
35
- const ignore = require ( 'gulp-ignore' ) ;
36
33
const rimraf = require ( 'rimraf' ) ;
37
34
const header = require ( 'gulp-header' ) ;
38
35
const gitRev = require ( 'git-rev-sync' ) ;
@@ -43,6 +40,7 @@ const glob = require('glob');
43
40
const fs = require ( 'fs' ) ;
44
41
const gzipSize = require ( 'gzip-size' ) ;
45
42
const WrapperPlugin = require ( 'wrapper-webpack-plugin' ) ;
43
+ const { CheckerPlugin } = require ( 'awesome-typescript-loader' ) ;
46
44
47
45
function cleanDist ( dir ) {
48
46
return function cleanDistDirectory ( done ) {
@@ -115,20 +113,6 @@ function compileIndvES2015ModulesToBrowser() {
115
113
return pathObj . name === 'firebase-app' ;
116
114
} ;
117
115
118
- const babelLoader = {
119
- loader : 'babel-loader' ,
120
- options : config . babel
121
- } ;
122
-
123
- const tsLoader = {
124
- loader : 'ts-loader' ,
125
- options : {
126
- compilerOptions : {
127
- declaration : false
128
- }
129
- }
130
- } ;
131
-
132
116
const webpackConfig = {
133
117
devtool : 'source-map' ,
134
118
entry : {
@@ -144,21 +128,18 @@ function compileIndvES2015ModulesToBrowser() {
144
128
} ,
145
129
module : {
146
130
rules : [ {
147
- test : / \. t s ( x ? ) $ / ,
148
- exclude : / n o d e _ m o d u l e s / ,
149
- use : [
150
- babelLoader ,
151
- tsLoader
152
- ]
153
- } , {
154
- test : / \. j s $ / ,
131
+ test : / \. t s x ? $ / ,
155
132
exclude : / n o d e _ m o d u l e s / ,
156
- use : [
157
- babelLoader
158
- ]
133
+ loader : 'awesome-typescript-loader' ,
134
+ options : {
135
+ useCache : true ,
136
+ useBabel : true ,
137
+ babelOptions : config . babelWebpack
138
+ }
159
139
} ]
160
140
} ,
161
141
plugins : [
142
+ new CheckerPlugin ( ) ,
162
143
new webpack . optimize . ModuleConcatenationPlugin ( ) ,
163
144
new webpack . optimize . CommonsChunkPlugin ( {
164
145
name : 'firebase-app'
@@ -171,8 +152,9 @@ function compileIndvES2015ModulesToBrowser() {
171
152
` ;
172
153
} ,
173
154
footer : fileName => {
155
+ // Note: '.default' needed because of https://github.com/babel/babel/issues/2212
174
156
return isFirebaseApp ( fileName ) ? `
175
- })();` : `
157
+ })().default ;` : `
176
158
} catch(error) {
177
159
throw new Error(
178
160
'Cannot instantiate ${ fileName } - ' +
@@ -182,13 +164,24 @@ function compileIndvES2015ModulesToBrowser() {
182
164
}
183
165
} ) ,
184
166
new webpack . optimize . UglifyJsPlugin ( {
185
- sourceMap : true
167
+ sourceMap : true ,
168
+ mangle : {
169
+ props : {
170
+ ignore_quoted : true ,
171
+ regex : / ^ _ | _ $ / ,
172
+ }
173
+ } ,
174
+ compress : {
175
+ passes : 3 ,
176
+ unsafe : true ,
177
+ warnings : false ,
178
+ }
186
179
} )
187
180
] ,
188
181
resolve : {
189
182
extensions : [ '.ts' , '.tsx' , '.js' ]
190
183
} ,
191
- }
184
+ } ;
192
185
193
186
return gulp . src ( 'src/**/*.ts' )
194
187
. pipe ( webpackStream ( webpackConfig , webpack ) )
0 commit comments