57 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # pumpify
 | |
| 
 | |
| Combine an array of streams into a single duplex stream using [pump](https://github.com/mafintosh/pump) and [duplexify](https://github.com/mafintosh/duplexify).
 | |
| If one of the streams closes/errors all streams in the pipeline will be destroyed.
 | |
| 
 | |
| ```
 | |
| npm install pumpify
 | |
| ```
 | |
| 
 | |
| [](http://travis-ci.org/mafintosh/pumpify)
 | |
| 
 | |
| ## Usage
 | |
| 
 | |
| Pass the streams you want to pipe together to pumpify `pipeline = pumpify(s1, s2, s3, ...)`.
 | |
| `pipeline` is a duplex stream that writes to the first streams and reads from the last one.
 | |
| Streams are piped together using [pump](https://github.com/mafintosh/pump) so if one of them closes
 | |
| all streams will be destroyed.
 | |
| 
 | |
| ``` js
 | |
| var pumpify = require('pumpify')
 | |
| var tar = require('tar-fs')
 | |
| var zlib = require('zlib')
 | |
| var fs = require('fs')
 | |
| 
 | |
| var untar = pumpify(zlib.createGunzip(), tar.extract('output-folder'))
 | |
| // you can also pass an array instead
 | |
| // var untar = pumpify([zlib.createGunzip(), tar.extract('output-folder')])
 | |
| 
 | |
| fs.createReadStream('some-gzipped-tarball.tgz').pipe(untar)
 | |
| ```
 | |
| 
 | |
| If you are pumping object streams together use `pipeline = pumpify.obj(s1, s2, ...)`.
 | |
| Call `pipeline.destroy()` to destroy the pipeline (including the streams passed to pumpify).
 | |
| 
 | |
| ### Using `setPipeline(s1, s2, ...)`
 | |
| 
 | |
| Similar to [duplexify](https://github.com/mafintosh/duplexify) you can also define the pipeline asynchronously using `setPipeline(s1, s2, ...)`
 | |
| 
 | |
| ``` js
 | |
| var untar = pumpify()
 | |
| 
 | |
| setTimeout(function() {
 | |
|   // will start draining the input now
 | |
|   untar.setPipeline(zlib.createGunzip(), tar.extract('output-folder'))
 | |
| }, 1000)
 | |
| 
 | |
| fs.createReadStream('some-gzipped-tarball.tgz').pipe(untar)
 | |
| ```
 | |
| 
 | |
| ## License
 | |
| 
 | |
| MIT
 | |
| 
 | |
| ## Related
 | |
| 
 | |
| `pumpify` is part of the [mississippi stream utility collection](https://github.com/maxogden/mississippi) which includes more useful stream modules similar to this one.
 |