UNPKG

3.4 kBMarkdownView Raw
1merge2
2====
3> Merge multiple streams into one stream in sequence or parallel.
4
5[![NPM version][npm-image]][npm-url]
6[![Build Status][travis-image]][travis-url]
7
8## Install
9
10Install with [npm](https://npmjs.org/package/merge2)
11
12```
13npm install merge2
14```
15
16
17## Usage
18
19```js
20var gulp = require('gulp'),
21 merge2 = require('merge2'),
22 concat = require('gulp-concat'),
23 minifyHtml = require('gulp-minify-html'),
24 ngtemplate = require('gulp-ngtemplate');
25
26gulp.task('app-js', function () {
27 return merge2(
28 gulp.src('static/src/tpl/*.html')
29 .pipe(minifyHtml({empty: true}))
30 .pipe(ngtemplate({
31 module: 'genTemplates',
32 standalone: true
33 })
34 ), gulp.src([
35 'static/src/js/app.js',
36 'static/src/js/locale_zh-cn.js',
37 'static/src/js/router.js',
38 'static/src/js/tools.js',
39 'static/src/js/services.js',
40 'static/src/js/filters.js',
41 'static/src/js/directives.js',
42 'static/src/js/controllers.js'
43 ])
44 )
45 .pipe(concat('app.js'))
46 .pipe(gulp.dest('static/dist/js/'));
47});
48```
49
50```js
51var stream = merge2([stream1, stream2], stream3, {end: false})
52//...
53stream.add(stream4, stream5);
54//..
55stream.end();
56```
57
58```js
59// equal to merge2([stream1, stream2], stream3)
60var stream = merge2();
61stream.add([stream1, stream2]);
62stream.add(stream3);
63```
64
65```js
66// merge order:
67// 1. merge `stream1`;
68// 2. merge `stream2` and `stream3` in parallel after `stream1` merged;
69// 3. merge 'stream4' after `stream2` and `stream3` merged;
70var stream = merge2(stream1, [stream2, stream3], stream4);
71
72// merge order:
73// 1. merge `stream5` and `stream6` in parallel after `stream4` merged;
74// 2. merge 'stream7' after `stream5` and `stream6` merged;
75stream.add([stream5, stream6], stream7);
76```
77
78```js
79// nest merge
80// equal to merge2(stream1, stream2, stream6, stream3, [stream4, stream5]);
81var streamA = merge2(stream1, stream2);
82var streamB = merge2(stream3, [stream4, stream5]);
83var stream = merge2(streamA, streamB);
84streamA.add(stream6);
85```
86
87## API
88
89```js
90var merge2 = require('merge2');
91```
92
93### merge2()
94### merge2(options)
95### merge2(stream1, stream2, ..., streamN)
96### merge2(stream1, stream2, ..., streamN, options)
97### merge2(stream1, [stream2, stream3, ...], streamN, options)
98return a duplex stream (mergedStream). streams in array will be merged in parallel.
99
100### mergedStream.add(stream)
101### mergedStream.add(stream1, [stream2, stream3, ...], ...)
102return the mergedStream.
103
104### mergedStream.on('queueDrain', function() {})
105It will emit 'queueDrain' when all streams merged. If you set `end === false` in options, this event give you a notice that should add more streams to merge or end the mergedStream.
106
107#### stream
108
109*option*
110
111Type: `Readable` or `Duplex` or `Transform` stream.
112
113#### options
114
115*option*
116
117Type: `Object`.
118
119* **end** - `Boolean` - if `end === false` then mergedStream will not be auto ended, you should end by yourself. **Default:** `undefined`
120
121* **objectMode** - `Boolean` . **Default:** `true`
122
123`objectMode` and other options(`highWaterMark`, `defaultEncoding` ...) is same as Node.js `Stream`.
124
125## License
126
127MIT © [Teambition](http://teambition.com)
128
129[npm-url]: https://npmjs.org/package/merge2
130[npm-image]: http://img.shields.io/npm/v/merge2.svg
131
132[travis-url]: https://travis-ci.org/teambition/merge2
133[travis-image]: http://img.shields.io/travis/teambition/merge2.svg