11var fs = require ( "fs" ) ;
22var pkg = require ( './package.json' ) ;
33var gulp = require ( 'gulp' ) ;
4- var replace = require ( 'gulp-replace' ) ;
5- var sourcemaps = require ( 'gulp-sourcemaps' ) ;
4+ var $ = require ( 'gulp-load-plugins' ) ( { lazy :true } ) ;
65var tsProject = require ( 'tsproject' ) ;
6+ var eventStream = require ( 'event-stream' ) ;
77
88gulp . task ( 'clean' , function ( ) {
99 var del = require ( 'del' ) ;
@@ -23,24 +23,20 @@ gulp.task('typescript.node', function () {
2323} ) ;
2424
2525gulp . task ( 'exceptionless.umd' , [ 'typescript' , 'typescript.integrations' ] , function ( ) {
26- var umd = require ( 'gulp-wrap-umd' ) ;
2726 return gulp . src ( 'dist/temp/src/exceptionless.js' )
28- . pipe ( sourcemaps . init ( { loadMaps : true } ) )
29- . pipe ( umd ( {
27+ . pipe ( $ . sourcemaps . init ( { loadMaps : true } ) )
28+ . pipe ( $ . wrapUmd ( {
3029 exports : 'exports' ,
3130 globalName : 'exceptionless' ,
3231 namespace : 'exceptionless' ,
3332 deps : [ 'TraceKit' ] ,
3433 template : fs . readFileSync ( './umd.template.jst' , 'utf8' )
3534 } ) )
36- . pipe ( sourcemaps . write ( '.' ) )
35+ . pipe ( $ . sourcemaps . write ( '.' ) )
3736 . pipe ( gulp . dest ( 'dist/temp' ) ) ;
3837} ) ;
3938
4039gulp . task ( 'exceptionless' , [ 'exceptionless.umd' ] , function ( ) {
41- var uglify = require ( 'gulp-uglify' ) ;
42- var concat = require ( 'gulp-concat' ) ;
43-
4440 gulp . src ( 'dist/temp/src/exceptionless.d.ts' )
4541 . pipe ( gulp . dest ( 'dist' ) ) ;
4642 var integrations = [
@@ -56,18 +52,18 @@ gulp.task('exceptionless', ['exceptionless.umd'], function () {
5652 ] ;
5753
5854 gulp . src ( files )
59- . pipe ( sourcemaps . init ( { loadMaps : true } ) )
60- . pipe ( concat ( 'exceptionless.js' ) )
61- . pipe ( replace ( 'exceptionless-js/1.0.0.0' , 'exceptionless-js/' + pkg . version ) )
62- . pipe ( sourcemaps . write ( '.' ) )
55+ . pipe ( $ . sourcemaps . init ( { loadMaps : true } ) )
56+ . pipe ( $ . concat ( 'exceptionless.js' ) )
57+ . pipe ( $ . replace ( 'exceptionless-js/1.0.0.0' , 'exceptionless-js/' + pkg . version ) )
58+ . pipe ( $ . sourcemaps . write ( '.' ) )
6359 . pipe ( gulp . dest ( 'dist' ) ) ;
6460
6561 return gulp . src ( files )
66- . pipe ( sourcemaps . init ( { loadMaps : true } ) )
67- . pipe ( concat ( 'exceptionless.min.js' ) )
68- . pipe ( replace ( 'exceptionless-js/1.0.0.0' , 'exceptionless-js/' + pkg . version ) )
69- . pipe ( uglify ( { output : { beautify : false } } ) )
70- . pipe ( sourcemaps . write ( '.' ) )
62+ . pipe ( $ . sourcemaps . init ( { loadMaps : true } ) )
63+ . pipe ( $ . concat ( 'exceptionless.min.js' ) )
64+ . pipe ( $ . replace ( 'exceptionless-js/1.0.0.0' , 'exceptionless-js/' + pkg . version ) )
65+ . pipe ( $ . uglify ( { output : { beautify : false } } ) )
66+ . pipe ( $ . sourcemaps . write ( '.' ) )
7167 . pipe ( gulp . dest ( 'dist' ) )
7268} ) ;
7369
@@ -79,9 +75,9 @@ gulp.task('exceptionless.node', ['typescript.node'], function () {
7975 ] ;
8076
8177 gulp . src ( files )
82- . pipe ( sourcemaps . init ( { loadMaps : true } ) )
83- . pipe ( replace ( 'exceptionless-js/1.0.0.0' , 'exceptionless-node/' + pkg . version ) )
84- . pipe ( sourcemaps . write ( '.' ) )
78+ . pipe ( $ . sourcemaps . init ( { loadMaps : true } ) )
79+ . pipe ( $ . replace ( 'exceptionless-js/1.0.0.0' , 'exceptionless-node/' + pkg . version ) )
80+ . pipe ( $ . sourcemaps . write ( '.' ) )
8581 . pipe ( gulp . dest ( 'dist' ) ) ;
8682} ) ;
8783
@@ -90,10 +86,9 @@ gulp.task('watch', ['build'], function () {
9086} ) ;
9187
9288gulp . task ( 'lint' , function ( ) {
93- var tslint = require ( 'gulp-tslint' ) ;
9489 return gulp . src ( [ 'src/**/*.ts' , '!src/typings/**/*.ts' ] )
95- . pipe ( tslint ( { formatter : 'verbose' } ) )
96- . pipe ( tslint . report ( ) ) ;
90+ . pipe ( $ . tslint ( { formatter : 'verbose' } ) )
91+ . pipe ( $ . tslint . report ( ) ) ;
9792} ) ;
9893
9994gulp . task ( 'build' , [ 'clean' , 'lint' , 'exceptionless' , 'exceptionless.node' ] ) ;
@@ -103,35 +98,50 @@ gulp.task('typescript.test', function () {
10398} ) ;
10499
105100gulp . task ( 'exceptionless.test.umd' , [ 'typescript.test' ] , function ( ) {
106- var umd = require ( 'gulp-wrap-umd' ) ;
107- return gulp . src ( 'dist/temp/src/exceptionless-spec.js' )
108- . pipe ( sourcemaps . init ( { loadMaps : true } ) )
109- . pipe ( umd ( {
101+ var wrap = function ( filename ) {
102+ return gulp . src ( filename )
103+ . pipe ( $ . sourcemaps . init ( { loadMaps : true } ) )
104+ . pipe ( $ . wrapUmd ( {
110105 exports : 'exports' ,
111106 globalName : 'exceptionless' ,
112107 namespace : 'exceptionless'
113108 } ) )
114- . pipe ( replace ( '}(this, function(require, exports, module) {' , '}(this, function(require, exports, module) {\nif (!exports) {\n\tvar exports = {};\n}\n' ) )
115- . pipe ( sourcemaps . write ( '.' ) )
109+ . pipe ( $ . replace ( '}(this, function(require, exports, module) {' , '}(this, function(require, exports, module) {\nif (!exports) {\n\tvar exports = {};\n}\n' ) )
110+ . pipe ( $ . sourcemaps . write ( '.' ) )
116111 . pipe ( gulp . dest ( 'dist/temp' ) ) ;
112+ } ;
113+
114+ return eventStream . merge (
115+ wrap ( 'dist/temp/src/exceptionless-nodespec.js' ) ,
116+ wrap ( 'dist/temp/src/exceptionless-browserspec.js' ) ) ;
117117} ) ;
118118
119- gulp . task ( 'test' , [ 'exceptionless.test.umd' ] , function ( done ) {
120- var mocha = require ( 'gulp-mocha' ) ;
121- return gulp . src ( 'dist/temp/exceptionless-spec.js' , { read : false } )
122- . pipe ( mocha ( {
119+ gulp . task ( 'test-node' , [ 'exceptionless.test.umd' ] , function ( done ) {
120+ return gulp . src ( 'dist/temp/exceptionless-nodespec.js' , { read : false } )
121+ . pipe ( $ . mocha ( {
123122 require : [ 'source-map-support/register' ]
124123 } ) )
125124 . once ( 'end' , function ( ) {
126125 process . exit ( ) ;
127126 } ) ;
128127} ) ;
129128
129+ gulp . task ( 'test-browser' , [ 'exceptionless.test.umd' ] , function ( ) {
130+ return gulp
131+ . src ( 'testrunner.html' )
132+ . pipe ( $ . mochaPhantomjs ( ) ) ;
133+ } ) ;
134+
135+ gulp . task ( 'test' , function ( ) {
136+ // test-node calls process.exit(), so run browser tests before node tests
137+ var runSequence = require ( 'run-sequence' ) ;
138+ runSequence ( 'test-browser' , 'test-node' ) ;
139+ } ) ;
140+
130141gulp . task ( 'format' , function ( ) {
131- var exec = require ( 'gulp-exec' ) ;
132142 return gulp . src ( [ 'src/**/*.ts' , '!src/typings/**/*.ts' ] )
133- . pipe ( exec ( 'node_modules/typescript-formatter/bin/tsfmt -r <%= file.path %>' ) )
134- . pipe ( exec . reporter ( ) ) ;
143+ . pipe ( $ . exec ( 'node_modules/typescript-formatter/bin/tsfmt -r <%= file.path %>' ) )
144+ . pipe ( $ . exec . reporter ( ) ) ;
135145} ) ;
136146
137147gulp . task ( 'default' , [ 'watch' , 'build' , 'test' ] ) ;
0 commit comments