@@ -26,13 +26,10 @@ const path = require('path');
2626const clone = require ( 'gulp-clone' ) ;
2727const webpack = require ( 'webpack' ) ;
2828const webpackStream = require ( 'webpack-stream' ) ;
29- const named = require ( 'vinyl-named' ) ;
3029const sourcemaps = require ( 'gulp-sourcemaps' ) ;
3130const concat = require ( 'gulp-concat' ) ;
3231const replace = require ( 'gulp-replace' ) ;
33- const uglify = require ( 'gulp-uglify' ) ;
3432const gulpFile = require ( 'gulp-file' ) ;
35- const ignore = require ( 'gulp-ignore' ) ;
3633const rimraf = require ( 'rimraf' ) ;
3734const header = require ( 'gulp-header' ) ;
3835const gitRev = require ( 'git-rev-sync' ) ;
@@ -43,6 +40,7 @@ const glob = require('glob');
4340const fs = require ( 'fs' ) ;
4441const gzipSize = require ( 'gzip-size' ) ;
4542const WrapperPlugin = require ( 'wrapper-webpack-plugin' ) ;
43+ const { CheckerPlugin } = require ( 'awesome-typescript-loader' ) ;
4644
4745function cleanDist ( dir ) {
4846 return function cleanDistDirectory ( done ) {
@@ -115,20 +113,6 @@ function compileIndvES2015ModulesToBrowser() {
115113 return pathObj . name === 'firebase-app' ;
116114 } ;
117115
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-
132116 const webpackConfig = {
133117 devtool : 'source-map' ,
134118 entry : {
@@ -144,21 +128,18 @@ function compileIndvES2015ModulesToBrowser() {
144128 } ,
145129 module : {
146130 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 ? $ / ,
155132 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+ }
159139 } ]
160140 } ,
161141 plugins : [
142+ new CheckerPlugin ( ) ,
162143 new webpack . optimize . ModuleConcatenationPlugin ( ) ,
163144 new webpack . optimize . CommonsChunkPlugin ( {
164145 name : 'firebase-app'
@@ -171,8 +152,9 @@ function compileIndvES2015ModulesToBrowser() {
171152 ` ;
172153 } ,
173154 footer : fileName => {
155+ // Note: '.default' needed because of https://github.com/babel/babel/issues/2212
174156 return isFirebaseApp ( fileName ) ? `
175- })();` : `
157+ })().default ;` : `
176158 } catch(error) {
177159 throw new Error(
178160 'Cannot instantiate ${ fileName } - ' +
@@ -182,13 +164,24 @@ function compileIndvES2015ModulesToBrowser() {
182164 }
183165 } ) ,
184166 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+ }
186179 } )
187180 ] ,
188181 resolve : {
189182 extensions : [ '.ts' , '.tsx' , '.js' ]
190183 } ,
191- }
184+ } ;
192185
193186 return gulp . src ( 'src/**/*.ts' )
194187 . pipe ( webpackStream ( webpackConfig , webpack ) )
0 commit comments