parent
							
								
									c36ea0221e
								
							
						
					
					
						commit
						23cec1e8e2
					
				
							
								
								
									
										52
									
								
								gulpfile.js
									
									
									
									
									
								
							
							
						
						
									
										52
									
								
								gulpfile.js
									
									
									
									
									
								
							| @ -16,7 +16,7 @@ var merge = require('merge'); | ||||
| var merge2 = require('merge2'); | ||||
| var path = require('path'); | ||||
| var semver = require('semver'); | ||||
| var watch = require('gulp-watch'); | ||||
| var watch = require('./tools/build/watch'); | ||||
| 
 | ||||
| var clean = require('./tools/build/clean'); | ||||
| var transpile = require('./tools/build/transpile'); | ||||
| @ -222,9 +222,7 @@ gulp.task('build/checkCircularDependencies', function (done) { | ||||
| // ------------------
 | ||||
| // web servers
 | ||||
| gulp.task('serve.js.dev', ['build.js.dev'], function(neverDone) { | ||||
|   watch('modules/**', function() { | ||||
|     gulp.start('!broccoli.js.dev'); | ||||
|   }); | ||||
|   watch('modules/**', '!broccoli.js.dev'); | ||||
| 
 | ||||
|   jsserve(gulp, gulpPlugins, { | ||||
|     path: CONFIG.dest.js.dev.es5, | ||||
| @ -304,7 +302,7 @@ function createDocsTasks(publicBuild) { | ||||
| 
 | ||||
|   gulp.task(taskPrefix, [taskPrefix + '/assets', taskPrefix + '/app', taskPrefix + '/dgeni']); | ||||
|   gulp.task(taskPrefix + '/watch', function() { | ||||
|     return watch('docs/app/**/*', [taskPrefix + '/app']); | ||||
|     return watch('docs/app/**/*', { ignoreInitial: false }, [taskPrefix + '/app']); | ||||
|   }); | ||||
| 
 | ||||
|   gulp.task(taskPrefix + '/test', function (done) { | ||||
| @ -372,20 +370,17 @@ gulp.task('test.unit.js', ['build.js.dev'], function (neverDone) { | ||||
|     'check-format' | ||||
|   ); | ||||
| 
 | ||||
|   watch('modules/**', function() { | ||||
|     runSequence( | ||||
|   watch('modules/**', [ | ||||
|     '!broccoli.js.dev', | ||||
|     '!test.unit.js/karma-run' | ||||
|     ); | ||||
|   }); | ||||
|   ]); | ||||
| }); | ||||
| 
 | ||||
| gulp.task('watch.js.dev', ['build.js.dev'], function (neverDone) { | ||||
|   watch('modules/**', function() { | ||||
|     runSequence( | ||||
|       '!broccoli.js.dev' | ||||
|     ); | ||||
|   }); | ||||
|   watch('modules/**', [ | ||||
|     '!broccoli.js.dev', | ||||
|     '!test.unit.js/karma-run', | ||||
|   ]); | ||||
| }); | ||||
| 
 | ||||
| 
 | ||||
| @ -404,19 +399,16 @@ gulp.task('!test.unit.js/karma-run', function(done) { | ||||
| 
 | ||||
| 
 | ||||
| gulp.task('test.unit.dart', ['build/tree.dart'], function (done) { | ||||
| 
 | ||||
|   runSequence( | ||||
|     '!test.unit.dart/karma-server', | ||||
|     '!test.unit.dart/karma-run' | ||||
|   ); | ||||
| 
 | ||||
|   watch('modules/angular2/**', function() { | ||||
|     runSequence( | ||||
|   watch('modules/angular2/**', [ | ||||
|     '!build/tree.dart', | ||||
|     'build/format.dart', | ||||
|     '!test.unit.dart/karma-run' | ||||
|     ); | ||||
|   }); | ||||
|   ]); | ||||
| }); | ||||
| 
 | ||||
| gulp.task('!test.unit.dart/karma-run', function (done) { | ||||
| @ -454,37 +446,29 @@ gulp.task('test.unit.cjs/ci', function(done) { | ||||
| 
 | ||||
| 
 | ||||
| gulp.task('test.unit.cjs', ['build/clean.js', 'build.tools'], function (done) { | ||||
|   function buildAndTest() { | ||||
|     runSequence( | ||||
|   var buildAndTest = [ | ||||
|     '!build.js.cjs', | ||||
|     'test.unit.cjs/ci' | ||||
|     ); | ||||
|   } | ||||
|   ]; | ||||
| 
 | ||||
|   buildAndTest(); | ||||
| 
 | ||||
|   watch('modules/**', buildAndTest); | ||||
|   watch('modules/**', { ignoreInitial: false }, buildAndTest); | ||||
| }); | ||||
| 
 | ||||
| 
 | ||||
| gulp.task('test.unit.tools/ci', function(done) { | ||||
|   fork('./tools/traceur-jasmine', ['dist/tools/**/*.spec.js'], { | ||||
|     stdio: 'inherit' | ||||
|   }).on('close', done); | ||||
|   }).on('close', done.bind(null, null)); | ||||
| }); | ||||
| 
 | ||||
| 
 | ||||
| gulp.task('test.unit.tools', ['build/clean.tools'],  function(done) { | ||||
|   function buildAndTest() { | ||||
|     runSequence( | ||||
|   var buildAndTest = [ | ||||
|     '!build.tools', | ||||
|     'test.unit.tools/ci' | ||||
|     ); | ||||
|   } | ||||
|   ]; | ||||
| 
 | ||||
|   buildAndTest(); | ||||
| 
 | ||||
|   watch('tools/**', buildAndTest); | ||||
|   watch(['tools/**', '!tools/**/test-fixtures/**'], {ignoreInitial: false}, buildAndTest); | ||||
| }); | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										83
									
								
								tools/build/watch.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								tools/build/watch.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,83 @@ | ||||
| var chokidar = require('chokidar'); | ||||
| var runSequence = require('run-sequence'); | ||||
| var path = require('path'); | ||||
| 
 | ||||
| function watch(globs, opts, tasks) { | ||||
|   if (typeof opts !== 'object' || Array.isArray(opts)) { | ||||
|     tasks = opts; | ||||
|     opts = {}; | ||||
|   } | ||||
| 
 | ||||
|   var useRunSequence = typeof tasks !== 'function'; | ||||
|   var runTasks; | ||||
| 
 | ||||
|   if (useRunSequence) { | ||||
|     if (!Array.isArray(tasks)) tasks = [tasks]; | ||||
|     tasks = tasks.slice(); | ||||
|     tasks.push(tasksDone); | ||||
|     runTasks = function runTaskSequence() { | ||||
|       runSequence.apply(null, tasks); | ||||
|     } | ||||
|   } else { | ||||
|     var sync = tasks.length === 0; | ||||
|     runTasks = function runCallback() { | ||||
|       try { | ||||
|         tasks(tasksDone); | ||||
|         if (sync) tasksDone(); | ||||
|       } catch (e) { | ||||
|         return tasksDone(e); | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   var events = opts.events = opts.events || ['add', 'change', 'unlink']; | ||||
|   if (opts.ignoreInitial === undefined) opts.ignoreInitial = true; | ||||
|   var delay = opts.delay; | ||||
|   if (delay === undefined) delay = 100; | ||||
| 
 | ||||
|   var watcher = chokidar.watch(globs, opts). | ||||
|       on('all', handleEvent). | ||||
|       on('error', function(err) { | ||||
|         throw err; | ||||
|       }); | ||||
| 
 | ||||
|   var close = watcher.close.bind(watcher); | ||||
|   watcher.close = function() { | ||||
|     if (timeoutId !== null) clearTimeout(timeoutId); | ||||
|     close(); | ||||
|   } | ||||
| 
 | ||||
|   var eventsRecorded = 0; // Number of events recorded
 | ||||
|   var timeoutId = null; // If non-null, event capture window is open
 | ||||
| 
 | ||||
|   return watcher; | ||||
| 
 | ||||
|   function handleEvent(event, filepath) { | ||||
|     // Ignore unwatched events
 | ||||
|     if (events.indexOf(event) < 0) return; | ||||
| 
 | ||||
|     // Increment number of events captured in this window
 | ||||
|     ++eventsRecorded; | ||||
| 
 | ||||
|     if (timeoutId === null) { | ||||
|       timeoutId = setTimeout(invokeCallback, delay); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   function invokeCallback() { | ||||
|     eventsRecorded = 0; | ||||
|     runTasks(); | ||||
|   } | ||||
| 
 | ||||
|   function tasksDone(err) { | ||||
|     if (err) throw err; | ||||
|     if (eventsRecorded) { | ||||
|       // eventsRecorded has increased during the run, run again on the next turn
 | ||||
|       timeoutId = setTimeout(invokeCallback, 0); | ||||
|     } else { | ||||
|       timeoutId = null; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| module.exports = watch; | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user