79 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # merge-stream
 | |
| 
 | |
| Merge (interleave) a bunch of streams.
 | |
| 
 | |
| [](http://travis-ci.org/grncdr/merge-stream)
 | |
| 
 | |
| ## Synopsis
 | |
| 
 | |
| ```javascript
 | |
| var stream1 = new Stream();
 | |
| var stream2 = new Stream();
 | |
| 
 | |
| var merged = mergeStream(stream1, stream2);
 | |
| 
 | |
| var stream3 = new Stream();
 | |
| merged.add(stream3);
 | |
| merged.isEmpty();
 | |
| //=> false
 | |
| ```
 | |
| 
 | |
| ## Description
 | |
| 
 | |
| This is adapted from [event-stream](https://github.com/dominictarr/event-stream) separated into a new module, using Streams3.
 | |
| 
 | |
| ## API
 | |
| 
 | |
| ### `mergeStream`
 | |
| 
 | |
| Type: `function`
 | |
| 
 | |
| Merges an arbitrary number of streams. Returns a merged stream.
 | |
| 
 | |
| #### `merged.add`
 | |
| 
 | |
| A method to dynamically add more sources to the stream. The argument supplied to `add` can be either a source or an array of sources.
 | |
| 
 | |
| #### `merged.isEmpty`
 | |
| 
 | |
| A method that tells you if the merged stream is empty.
 | |
| 
 | |
| When a stream is "empty" (aka. no sources were added), it could not be returned to a gulp task.
 | |
| 
 | |
| So, we could do something like this:
 | |
| 
 | |
| ```js
 | |
| stream = require('merge-stream')();
 | |
| // Something like a loop to add some streams to the merge stream
 | |
| // stream.add(streamA);
 | |
| // stream.add(streamB);
 | |
| return stream.isEmpty() ? null : stream;
 | |
| ```
 | |
| 
 | |
| ## Gulp example
 | |
| 
 | |
| An example use case for **merge-stream** is to combine parts of a task in a project's **gulpfile.js** like this:
 | |
| 
 | |
| ```js
 | |
| const gulp =          require('gulp');
 | |
| const htmlValidator = require('gulp-w3c-html-validator');
 | |
| const jsHint =        require('gulp-jshint');
 | |
| const mergeStream =   require('merge-stream');
 | |
| 
 | |
| function lint() {
 | |
|   return mergeStream(
 | |
|     gulp.src('src/*.html')
 | |
|       .pipe(htmlValidator())
 | |
|       .pipe(htmlValidator.reporter()),
 | |
|     gulp.src('src/*.js')
 | |
|       .pipe(jsHint())
 | |
|       .pipe(jsHint.reporter())
 | |
|   );
 | |
| }
 | |
| gulp.task('lint', lint);
 | |
| ```
 | |
| 
 | |
| ## License
 | |
| 
 | |
| MIT
 |