| 
									
										
										
										
											2015-03-05 15:18:11 +08:00
										 |  |  | function WatchIgnorePlugin(paths) { | 
					
						
							|  |  |  | 	this.paths = paths; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module.exports = WatchIgnorePlugin; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-08 20:39:02 +08:00
										 |  |  | WatchIgnorePlugin.prototype.apply = function(compiler) { | 
					
						
							|  |  |  | 	compiler.plugin("after-environment", function() { | 
					
						
							| 
									
										
										
										
											2015-03-05 15:18:11 +08:00
										 |  |  | 		compiler.watchFileSystem = new IgnoringWatchFileSystem(compiler.watchFileSystem, this.paths); | 
					
						
							|  |  |  | 	}.bind(this)); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function IgnoringWatchFileSystem(wfs, paths) { | 
					
						
							|  |  |  | 	this.wfs = wfs; | 
					
						
							|  |  |  | 	this.paths = paths; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-08 20:39:02 +08:00
										 |  |  | IgnoringWatchFileSystem.prototype.watch = function(files, dirs, missing, startTime, delay, callback, callbackUndelayed) { | 
					
						
							|  |  |  | 	var ignored = function(path) { | 
					
						
							|  |  |  | 		return this.paths.some(function(p) { | 
					
						
							| 
									
										
										
										
											2015-07-16 06:39:56 +08:00
										 |  |  | 			return p instanceof RegExp ? p.test(path) : path.indexOf(p) === 0; | 
					
						
							| 
									
										
										
										
											2015-03-05 15:18:11 +08:00
										 |  |  | 		}); | 
					
						
							|  |  |  | 	}.bind(this); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-08 20:39:02 +08:00
										 |  |  | 	var notIgnored = function(path) { | 
					
						
							|  |  |  | 		return !ignored(path); | 
					
						
							|  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2015-03-05 15:18:11 +08:00
										 |  |  | 	var ignoredFiles = files.filter(ignored); | 
					
						
							|  |  |  | 	var ignoredDirs = dirs.filter(ignored); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-08 20:39:02 +08:00
										 |  |  | 	this.wfs.watch(files.filter(notIgnored), dirs.filter(notIgnored), missing, startTime, delay, function(err, filesModified, dirsModified, fileTimestamps, dirTimestamps) { | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 		if(err) return callback(err); | 
					
						
							| 
									
										
										
										
											2015-03-05 15:18:11 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-08 20:39:02 +08:00
										 |  |  | 		ignoredFiles.forEach(function(path) { | 
					
						
							| 
									
										
										
										
											2015-03-05 15:18:11 +08:00
										 |  |  | 			fileTimestamps[path] = 1; | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-08 20:39:02 +08:00
										 |  |  | 		ignoredDirs.forEach(function(path) { | 
					
						
							| 
									
										
										
										
											2015-03-05 15:18:11 +08:00
										 |  |  | 			dirTimestamps[path] = 1; | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		callback(err, filesModified, dirsModified, fileTimestamps, dirTimestamps); | 
					
						
							|  |  |  | 	}, callbackUndelayed); | 
					
						
							|  |  |  | }; |