@@ -46,10 +46,36 @@ var dartSdk = require('./tools/build/dart');
4646var browserProvidersConf = require ( './browser-providers.conf.js' ) ;
4747var os = require ( 'os' ) ;
4848
49- require ( './tools/check-environment' ) ( {
50- requiredNpmVersion : '>=2.14.7' ,
51- requiredNodeVersion : '>=4.2.1'
52- } ) ;
49+ require ( './tools/check-environment' ) (
50+ { requiredNpmVersion : '>=2.14.7' , requiredNodeVersion : '>=4.2.1' } ) ;
51+
52+ var cliArgs = minimist ( process . argv . slice ( 2 ) ) ;
53+
54+ if ( cliArgs . projects ) {
55+ // normalize for analytics
56+ cliArgs . projects . split ( ',' ) . sort ( ) . join ( ',' ) ;
57+ }
58+
59+ // --projects=angular2,angular2_material => {angular2: true, angular2_material: true}
60+ var allProjects =
61+ 'angular1_router,angular2,angular2_material,benchmarks,benchmarks_external,benchpress,playground' ;
62+ var cliArgsProjects = ( cliArgs . projects || allProjects )
63+ . split ( ',' )
64+ . reduce ( ( map , projectName ) => {
65+ map [ projectName ] = true ;
66+ return map ;
67+ } , { } ) ;
68+
69+ function printModulesWarning ( ) {
70+ if ( ! cliArgs . projects && ! process . env . CI ) {
71+ // if users didn't specify projects to build, tell them why and how they should
72+ console . warn (
73+ "Pro Tip: Did you know that you can speed up your build by specifying project name(s)?" ) ;
74+ console . warn ( " It's like pressing the turbo button in the old days, but better!" ) ;
75+ console . warn ( " Examples: --project=angular2 or --project=angular2,angular2_material" ) ;
76+ }
77+ }
78+
5379
5480// Make it easy to quiet down portions of the build.
5581// --logs=all -> log everything (This is the default)
@@ -162,7 +188,7 @@ gulp.task('build/tree.dart', ['build/clean.dart', 'build.tools'],
162188
163189
164190gulp . task ( '!build/tree.dart' ,
165- function ( ) { return angularBuilder . rebuildDartTree ( ) ; } ) ;
191+ function ( ) { return angularBuilder . rebuildDartTree ( cliArgsProjects ) ; } ) ;
166192
167193
168194// ------------
@@ -444,15 +470,19 @@ function getBrowsersFromCLI(provider) {
444470}
445471
446472gulp . task ( 'test.unit.js' , [ 'build.js.dev' ] , function ( done ) {
473+ printModulesWarning ( ) ;
447474 runSequence ( '!test.unit.js/karma-server' , function ( ) {
448475 watch ( 'modules/**' , { ignoreInitial : true } , [ '!broccoli.js.dev' , '!test.unit.js/karma-run' ] ) ;
449476 } ) ;
450477} ) ;
451478
452- gulp . task ( 'watch.js.dev' , [ 'build.js.dev' ] ,
453- function ( done ) { watch ( 'modules/**' , [ '!broccoli.js.dev' ] ) ; } ) ;
479+ gulp . task ( 'watch.js.dev' , [ 'build.js.dev' ] , function ( done ) {
480+ printModulesWarning ( ) ;
481+ watch ( 'modules/**' , [ '!broccoli.js.dev' ] ) ;
482+ } ) ;
454483
455484gulp . task ( 'test.unit.js.sauce' , [ 'build.js.dev' ] , function ( done ) {
485+ printModulesWarning ( ) ;
456486 var browserConf = getBrowsersFromCLI ( 'SL' ) ;
457487 if ( browserConf . isProvider ) {
458488 launchKarmaWithExternalBrowsers ( [ 'dots' ] , browserConf . browsersToRun , done ) ;
@@ -462,6 +492,7 @@ gulp.task('test.unit.js.sauce', ['build.js.dev'], function(done) {
462492} ) ;
463493
464494gulp . task ( 'test.unit.js.browserstack' , [ 'build.js.dev' ] , function ( done ) {
495+ printModulesWarning ( ) ;
465496 var browserConf = getBrowsersFromCLI ( 'BS' ) ;
466497 if ( browserConf . isProvider ) {
467498 launchKarmaWithExternalBrowsers ( [ 'dots' ] , browserConf . browsersToRun , done ) ;
@@ -535,6 +566,7 @@ gulp.task('!test.unit.router/karma-run', function(done) {
535566gulp . task ( 'buildRouter.dev' , function ( ) { buildRouter ( ) ; } ) ;
536567
537568gulp . task ( 'test.unit.dart' , function ( done ) {
569+ printModulesWarning ( ) ;
538570 runSequence ( 'build/tree.dart' , 'build/pure-packages.dart' , '!build/pubget.angular2.dart' ,
539571 '!build/change_detect.dart' , '!build/remove-pub-symlinks' , 'build.dart.material.css' ,
540572 '!test.unit.dart/karma-server' , '!test.unit.dart/karma-run' , function ( error ) {
@@ -632,12 +664,9 @@ gulp.task('test.unit.cjs/ci', function(done) {
632664
633665
634666gulp . task ( 'test.unit.cjs' , [ 'build/clean.js' , 'build.tools' ] , function ( neverDone ) {
635-
667+ printModulesWarning ( ) ;
636668 treatTestErrorsAsFatal = false ;
637-
638- var buildAndTest = [ '!build.js.cjs' , 'test.unit.cjs/ci' ] ;
639-
640- watch ( 'modules/**' , buildAndTest ) ;
669+ watch ( 'modules/**' , [ '!build.js.cjs' , 'test.unit.cjs/ci' ] ) ;
641670} ) ;
642671
643672// Use this target to continuously run dartvm unit-tests (such as transformer
@@ -812,12 +841,11 @@ gulp.task('!build.tools', function() {
812841gulp . task ( 'broccoli.js.dev' , [ 'build.tools' ] ,
813842 function ( done ) { runSequence ( '!broccoli.js.dev' , sequenceComplete ( done ) ) ; } ) ;
814843
815- gulp . task ( '!broccoli.js.dev' , ( ) => {
816- return angularBuilder . rebuildBrowserDevTree ( ) ;
817- } ) ;
844+ gulp . task ( '!broccoli.js.dev' ,
845+ ( ) => { return angularBuilder . rebuildBrowserDevTree ( cliArgsProjects ) ; } ) ;
818846
819847gulp . task ( '!broccoli.js.prod' ,
820- function ( ) { return angularBuilder . rebuildBrowserProdTree ( ) ; } ) ;
848+ function ( ) { return angularBuilder . rebuildBrowserProdTree ( cliArgsProjects ) ; } ) ;
821849
822850gulp . task ( 'build.js.dev' , [ 'build/clean.js' ] , function ( done ) {
823851 runSequence ( 'broccoli.js.dev' , 'build.css.material' , sequenceComplete ( done ) ) ;
@@ -840,7 +868,7 @@ var firstBuildJsCjs = true;
840868 * private task
841869 */
842870gulp . task ( '!build.js.cjs' , function ( ) {
843- return angularBuilder . rebuildNodeTree ( )
871+ return angularBuilder . rebuildNodeTree ( cliArgsProjects )
844872 . then ( function ( ) {
845873 if ( firstBuildJsCjs ) {
846874 firstBuildJsCjs = false ;
0 commit comments