@@ -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,23 @@ 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 ( ) ,
143+ new webpack . DefinePlugin ( {
144+ 'process.env' : {
145+ 'NODE_ENV' : JSON . stringify ( 'production' )
146+ }
147+ } ) ,
162148 new webpack . optimize . ModuleConcatenationPlugin ( ) ,
163149 new webpack . optimize . CommonsChunkPlugin ( {
164150 name : 'firebase-app'
@@ -171,8 +157,9 @@ function compileIndvES2015ModulesToBrowser() {
171157 ` ;
172158 } ,
173159 footer : fileName => {
160+ // Note: '.default' needed because of https://github.com/babel/babel/issues/2212
174161 return isFirebaseApp ( fileName ) ? `
175- })();` : `
162+ })().default ;` : `
176163 } catch(error) {
177164 throw new Error(
178165 'Cannot instantiate ${ fileName } - ' +
@@ -182,13 +169,24 @@ function compileIndvES2015ModulesToBrowser() {
182169 }
183170 } ) ,
184171 new webpack . optimize . UglifyJsPlugin ( {
185- sourceMap : true
172+ sourceMap : true ,
173+ mangle : {
174+ props : {
175+ ignore_quoted : true ,
176+ regex : / _ $ / ,
177+ }
178+ } ,
179+ compress : {
180+ passes : 3 ,
181+ unsafe : true ,
182+ warnings : false ,
183+ }
186184 } )
187185 ] ,
188186 resolve : {
189187 extensions : [ '.ts' , '.tsx' , '.js' ]
190188 } ,
191- }
189+ } ;
192190
193191 return gulp . src ( 'src/**/*.ts' )
194192 . pipe ( webpackStream ( webpackConfig , webpack ) )
0 commit comments