@@ -15,15 +15,24 @@ var fs = require('fs');
1515var path = require ( 'path' ) ;
1616var readline = require ( 'readline' ) ;
1717var Q = require ( 'q' ) ;
18+ var merge = require ( 'merge' ) ;
19+ var benchpress = require ( 'angular-benchpress/lib/cli' ) ;
1820
1921var js2es5Options = {
2022 annotations : true , // parse annotations
2123 types : true , // parse types
2224 script : false , // parse as a module
23- modules : 'register' ,
25+ modules : 'instantiate'
26+ } ;
27+
28+ var js2es5OptionsProd = merge ( true , js2es5Options , {
29+ typeAssertions : false
30+ } ) ;
31+
32+ var js2es5OptionsDev = merge ( true , js2es5Options , {
2433 typeAssertionModule : 'rtts_assert/rtts_assert' ,
2534 typeAssertions : true
26- } ;
35+ } ) ;
2736
2837var js2dartOptions = {
2938 annotations : true , // parse annotations
@@ -38,16 +47,18 @@ var gulpTraceur = require('./tools/transpiler/gulp-traceur');
3847// traceur runtime
3948
4049gulp . task ( 'jsRuntime/build' , function ( ) {
41- var traceurRuntime = gulp . src ( gulpTraceur . RUNTIME_PATH )
42- . pipe ( gulp . dest ( 'build/js' ) ) ;
50+ var traceurRuntime = gulp . src ( [
51+ gulpTraceur . RUNTIME_PATH ,
52+ "node_modules/es6-module-loader/dist/es6-module-loader-sans-promises.src.js" ,
53+ "node_modules/systemjs/lib/extension-register.js"
54+ ] ) . pipe ( gulp . dest ( 'build/js' ) ) ;
4355 return traceurRuntime ;
4456} ) ;
4557
4658// -----------------------
4759// modules
4860var sourceTypeConfigs = {
4961 dart : {
50- compilerOptions : js2dartOptions ,
5162 transpileSrc : [ 'modules/**/*.js' ] ,
5263 htmlSrc : [ 'modules/*/src/**/*.html' ] ,
5364 copySrc : [ 'modules/**/*.dart' ] ,
@@ -56,7 +67,6 @@ var sourceTypeConfigs = {
5667 mimeType : 'application/dart'
5768 } ,
5869 js : {
59- compilerOptions : js2es5Options ,
6070 transpileSrc : [ 'modules/**/*.js' , 'modules/**/*.es6' ] ,
6171 htmlSrc : [ 'modules/*/src/**/*.html' ] ,
6272 copySrc : [ 'modules/**/*.es5' ] ,
@@ -72,7 +82,7 @@ gulp.task('modules/clean', function() {
7282} ) ;
7383
7484gulp . task ( 'modules/build.dart/src' , function ( ) {
75- return createModuleTask ( sourceTypeConfigs . dart ) ;
85+ return createModuleTask ( merge ( sourceTypeConfigs . dart , { compilerOptions : js2dartOptions } ) ) ;
7686} ) ;
7787
7888gulp . task ( 'modules/build.dart/pubspec' , function ( done ) {
@@ -105,14 +115,24 @@ gulp.task('modules/build.dart/pubspec', function(done) {
105115
106116gulp . task ( 'modules/build.dart' , [ 'modules/build.dart/src' , 'modules/build.dart/pubspec' ] ) ;
107117
108- gulp . task ( 'modules/build.js' , function ( ) {
109- return createModuleTask ( sourceTypeConfigs . js ) ;
118+ gulp . task ( 'modules/build.dev.js' , function ( ) {
119+ return createModuleTask ( merge ( true , sourceTypeConfigs . js , { compilerOptions : js2es5OptionsDev } ) ) ;
120+ } ) ;
121+
122+ gulp . task ( 'modules/build.prod.js' , function ( ) {
123+ return createModuleTask ( merge ( true , sourceTypeConfigs . js , { compilerOptions : js2es5OptionsProd } ) ) ;
110124} ) ;
111125
112126function renameSrcToLib ( file ) {
113127 file . dirname = file . dirname . replace ( / \b s r c \b / , 'lib' ) ;
114128}
115129
130+ function renameEs5ToJs ( file ) {
131+ if ( file . extname == '.es5' ) {
132+ file . extname = '.js' ;
133+ }
134+ }
135+
116136function createModuleTask ( sourceTypeConfig ) {
117137 var transpile = gulp . src ( sourceTypeConfig . transpileSrc )
118138 . pipe ( rename ( { extname : '.' + sourceTypeConfig . outputExt } ) )
@@ -121,6 +141,7 @@ function createModuleTask(sourceTypeConfig) {
121141 . pipe ( gulp . dest ( sourceTypeConfig . outputDir ) ) ;
122142 var copy = gulp . src ( sourceTypeConfig . copySrc )
123143 . pipe ( rename ( renameSrcToLib ) )
144+ . pipe ( rename ( renameEs5ToJs ) )
124145 . pipe ( gulp . dest ( sourceTypeConfig . outputDir ) ) ;
125146 // TODO: provide the list of files to the template
126147 // automatically!
@@ -202,22 +223,50 @@ gulp.task('analyze/dartanalyzer', function(done) {
202223} ) ;
203224
204225
226+
227+ // ------------------
228+ // BENCHMARKS
229+
230+ var benchmarksBuildPath = 'build/benchpress' ;
231+ var benchmarksCompiledJsPath = 'build/js/benchmarks/lib' ;
232+
233+ gulp . task ( 'benchmarks/build.benchpress' , function ( ) {
234+ benchpress . build ( {
235+ benchmarksPath : benchmarksCompiledJsPath ,
236+ buildPath : benchmarksBuildPath
237+ } )
238+ } ) ;
239+
240+ gulp . task ( 'benchmarks/build' , function ( ) {
241+ runSequence (
242+ [ 'jsRuntime/build' , 'modules/build.prod.js' ] ,
243+ 'benchmarks/build.benchpress'
244+ ) ;
245+ } ) ;
246+
247+
248+
205249// ------------------
206250// WEB SERVER
207- gulp . task ( 'serve' , connect . server ( {
208- root : [ __dirname + '/build' ] ,
209- port : 8000 ,
210- livereload : false ,
211- open : false ,
212- middleware : function ( ) {
213- return [ function ( req , resp , next ) {
214- if ( req . url . match ( / \. d a r t $ / ) ) {
215- resp . setHeader ( "Content-Type" , "application/dart" ) ;
216- }
217- next ( ) ;
218- } ] ;
219- }
220- } ) ) ;
251+
252+ gulp . task ( 'serve' , function ( ) {
253+ connect . server ( {
254+ root : [ __dirname + '/build' ] ,
255+ port : 8000 ,
256+ livereload : false ,
257+ open : false ,
258+ middleware : function ( ) {
259+ return [ function ( req , resp , next ) {
260+ if ( req . url . match ( / \. d a r t $ / ) ) {
261+ resp . setHeader ( "Content-Type" , "application/dart" ) ;
262+ }
263+ next ( ) ;
264+ } ] ;
265+ }
266+ } ) ( ) ;
267+ } ) ;
268+
269+
221270
222271// --------------
223272// general targets
@@ -227,7 +276,7 @@ gulp.task('clean', ['modules/clean']);
227276gulp . task ( 'build' , function ( done ) {
228277 runSequence (
229278 // parallel
230- [ 'jsRuntime/build' , 'modules/build.dart' , 'modules/build.js' ] ,
279+ [ 'jsRuntime/build' , 'modules/build.dart' , 'modules/build.dev. js' ] ,
231280 // sequential
232281 'analyze/dartanalyzer'
233282 ) ;
0 commit comments