@@ -31,10 +31,7 @@ gulp.on('task_start', function(msg) {
3131
3232gulp . on ( 'task_stop' , function ( msg ) {
3333 gulp . executing . splice ( gulp . executing . indexOf ( msg . task ) , 1 ) ;
34- gulp . hasOnce = gulp . executing . filter ( function ( name ) {
35- return name . match ( / - o n c e $ / ) ;
36- } ) . length > 0 ;
37- console . log ( gulp . executing , gulp . hasOnce ) ;
34+ console . log ( gulp . executing . join ( ',' ) ) ;
3835} ) ;
3936
4037
@@ -47,29 +44,18 @@ function lazyRequireTask(path) {
4744
4845 return function ( callback ) {
4946 var task = require ( path ) . apply ( this , args ) ;
50-
5147 return task ( callback ) ;
5248 } ;
5349}
5450
5551function wrapWatch ( watch , task ) {
5652 return function ( callback ) {
5753 if ( process . env . WATCH ) {
58- gulp . watch ( watch , function ( cb ) {
59- if ( gulp . hasOnce ) {
60- var wait = function ( ) {
61- if ( gulp . hasOnce ) return ;
62- gulp . removeListener ( 'task_stop' , wait ) ;
63- gulp . start ( task ) ;
64- } ;
65- gulp . on ( 'task_stop' , wait ) ;
66- } else {
67- gulp . start ( task ) ;
68- }
69- } ) ;
54+ setTimeout ( function ( ) {
55+ gulp . watch ( watch , [ task ] ) ;
56+ } , 1000 ) ; // don't start watching too fast (node.js bug, see https://github.com/joyent/node/issues/8326)
7057 } else {
7158 callback ( ) ; // @see usage examples, wrapWatch only triggers watch, should depend on ['task']
72- // gulp.start(task, callback);
7359 }
7460 } ;
7561}
@@ -78,7 +64,7 @@ gulp.task('lint-once', lazyRequireTask('./tasks/lint', { src: jsSources }));
7864
7965gulp . task ( 'lint-or-die' , lazyRequireTask ( './tasks/lint' , { src : jsSources , dieOnError : true } ) ) ;
8066
81- gulp . task ( 'lint' , [ 'lint-once' ] , wrapWatch ( jsSources , 'lint' ) ) ;
67+ gulp . task ( 'lint' , wrapWatch ( jsSources , 'lint-once ' ) ) ;
8268
8369// usage: gulp loaddb --db fixture/db
8470gulp . task ( 'loaddb' , lazyRequireTask ( './tasks/loadDb' ) ) ;
@@ -89,21 +75,25 @@ gulp.task("nodemon", lazyRequireTask('./tasks/nodemon', {
8975 watch : [ "hmvc" , "modules" ]
9076} ) ) ;
9177
92- gulp . task ( "client:livereload" , lazyRequireTask ( "./tasks/livereload" , { watch : "public/{i,img,js,styles}/*.*" } ) ) ;
78+ gulp . task ( "client:livereload" , lazyRequireTask ( "./tasks/livereload" , { watch : "public/{i,img,js,styles}/**/* .*" } ) ) ;
9379
9480gulp . task ( 'link-modules' , lazyRequireTask ( './tasks/linkModules' , { src : [ 'client' , 'modules/*' , 'hmvc/*' ] } ) ) ;
9581
96- gulp . task ( "client:sync-resources" , lazyRequireTask ( './tasks/syncResources' , {
82+ gulp . task ( "client:sync-resources-once " , lazyRequireTask ( './tasks/syncResources' , {
9783 'assets/fonts' : 'public/fonts' ,
9884 'assets/img' : 'public/img'
9985} ) ) ;
10086
87+ gulp . task ( "client:sync-resources" ,
88+ wrapWatch ( 'assets/{fonts,img}/**' , 'client:sync-resources-once' )
89+ ) ;
90+
10191gulp . task ( "client:sync-css-images-once" , lazyRequireTask ( './tasks/syncCssImages' , {
10292 src : 'styles/**/*.{png,svg,gif,jpg}' ,
10393 dst : 'public/i'
10494} ) ) ;
10595
106- gulp . task ( 'client:sync-css-images' , [ 'client:sync-css-images-once' ] ,
96+ gulp . task ( 'client:sync-css-images' ,
10797 wrapWatch ( 'styles/**/*.{png,svg,gif,jpg}' , 'client:sync-css-images-once' )
10898) ;
10999
@@ -127,29 +117,31 @@ gulp.task('client:minify', lazyRequireTask('./tasks/minify', {
127117 root : './public'
128118} ) ) ;
129119
130-
131- gulp . task ( 'client:compile-css' , [ 'client:compile-css-once' ] , wrapWatch ( [ "styles/**/*.styl" ] , "client:compile-css-once" ) ) ;
120+ gulp . task ( 'client:compile-css' , wrapWatch ( [ "styles/**/*.styl" ] , "client:compile-css-once" ) ) ;
132121
133122
134123gulp . task ( "client:browserify:clean" , lazyRequireTask ( './tasks/browserifyClean' , { dst : './public/js' } ) ) ;
135124
136- gulp . task ( "client:browserify-once" , [ 'link-modules' , ' client:browserify:clean'] , lazyRequireTask ( './tasks/browserify' ) ) ;
137- gulp . task ( "client:browserify" , [ 'client:browserify-once' ] , wrapWatch ( [ 'client/**' , 'hmvc/**/client/**' ] , "client:browserify-once" ) ) ;
125+ gulp . task ( "client:browserify-once" , [ 'client:browserify:clean' ] , lazyRequireTask ( './tasks/browserify' ) ) ;
126+ gulp . task ( "client:browserify" , wrapWatch ( [ 'client/**' , 'hmvc/**/client/**' ] , "client:browserify-once" ) ) ;
138127
139128// we depend on compile-css, because if build-md5-list-once works in parallel with client:compile-css,
140129// then compile-css recreates files and build-md5-list-once misses them or errors when they are suddenly removed
141130gulp . task ( "client:build-md5-list-once" ,
142131 lazyRequireTask ( './tasks/buildMd5List' , { cwd : 'public' , src : './{fonts,js,styles}/**/*.*' , dst : './public.md5.json' } ) ) ;
143132
144- gulp . task ( "client:build-md5-list" , [ 'client:build-md5-list-once' ] ,
145- wrapWatch ( [ 'public/**' ] , 'client:build-md5-list-once' ) ) ; // watch dirs only, not just files (to see new files)
133+ gulp . task ( "client:build-md5-list" ,
134+ wrapWatch ( [ 'public/{fonts,js,styles}/ **' ] , 'client:build-md5-list-once' ) ) ; // watch dirs only, not just files (to see new files)
146135
147136
148137gulp . task ( 'build' , function ( callback ) {
149- runSequence ( 'link-modules' , "client:sync-resources" , 'client:compile-css' , 'client:browserify' , 'client:sync-css-images' , 'client:build-md5-list' , callback ) ;
138+ runSequence ( 'link-modules' , "client:sync-resources-once " , 'client:compile-css-once ' , 'client:browserify-once ' , 'client:sync-css-images-once ' , 'client:build-md5-list-once ' , callback ) ;
150139} ) ;
151140
152- gulp . task ( 'dev' , [ 'nodemon' , 'client:livereload' , 'build' ] ) ;
141+ gulp . task ( 'dev' , function ( callback ) {
142+ runSequence ( 'build' , [ "client:sync-resources" , 'client:compile-css' , 'client:browserify' , 'client:sync-css-images' , 'client:build-md5-list' , 'nodemon' , 'client:livereload' ] , callback ) ;
143+ // runSequence('build', ['nodemon', 'client:livereload', 'client:build-md5-list'], callback);
144+ } ) ;
153145
154146gulp . task ( 'tutorial:import' , [ 'link-modules' ] , lazyRequireTask ( 'tutorial/tasks/import' , {
155147 root : 'javascript-tutorial' ,
0 commit comments