UNPKG

1.9 kBMarkdownView Raw
1# pumpify
2
3Combine an array of streams into a single duplex stream using [pump](https://github.com/mafintosh/pump) and [duplexify](https://github.com/mafintosh/duplexify).
4If one of the streams closes/errors all streams in the pipeline will be destroyed.
5
6```
7npm install pumpify
8```
9
10[![build status](http://img.shields.io/travis/mafintosh/pumpify.svg?style=flat)](http://travis-ci.org/mafintosh/pumpify)
11
12## Usage
13
14Pass the streams you want to pipe together to pumpify `pipeline = pumpify(s1, s2, s3, ...)`.
15`pipeline` is a duplex stream that writes to the first streams and reads from the last one.
16Streams are piped together using [pump](https://github.com/mafintosh/pump) so if one of them closes
17all streams will be destroyed.
18
19``` js
20var pumpify = require('pumpify')
21var tar = require('tar-fs')
22var zlib = require('zlib')
23var fs = require('fs')
24
25var untar = pumpify(zlib.createGunzip(), tar.extract('output-folder'))
26// you can also pass an array instead
27// var untar = pumpify([zlib.createGunzip(), tar.extract('output-folder')])
28
29fs.createReadStream('some-gzipped-tarball.tgz').pipe(untar)
30```
31
32If you are pumping object streams together use `pipeline = pumpify.obj(s1, s2, ...)`.
33Call `pipeline.destroy()` to destroy the pipeline (including the streams passed to pumpify).
34
35### Using `setPipeline(s1, s2, ...)`
36
37Similar to [duplexify](https://github.com/mafintosh/duplexify) you can also define the pipeline asynchronously using `setPipeline(s1, s2, ...)`
38
39``` js
40var untar = pumpify()
41
42setTimeout(function() {
43 // will start draining the input now
44 untar.setPipeline(zlib.createGunzip(), tar.extract('output-folder'))
45}, 1000)
46
47fs.createReadStream('some-gzipped-tarball.tgz').pipe(untar)
48```
49
50## License
51
52MIT
53
54## Related
55
56`pumpify` is part of the [mississippi stream utility collection](https://github.com/maxogden/mississippi) which includes more useful stream modules similar to this one.