[6a3a178] | 1 | # pump
|
---|
| 2 |
|
---|
| 3 | pump is a small node module that pipes streams together and destroys all of them if one of them closes.
|
---|
| 4 |
|
---|
| 5 | ```
|
---|
| 6 | npm install pump
|
---|
| 7 | ```
|
---|
| 8 |
|
---|
| 9 | [![build status](http://img.shields.io/travis/mafintosh/pump.svg?style=flat)](http://travis-ci.org/mafintosh/pump)
|
---|
| 10 |
|
---|
| 11 | ## What problem does it solve?
|
---|
| 12 |
|
---|
| 13 | When using standard `source.pipe(dest)` source will _not_ be destroyed if dest emits close or an error.
|
---|
| 14 | You are also not able to provide a callback to tell when then pipe has finished.
|
---|
| 15 |
|
---|
| 16 | pump does these two things for you
|
---|
| 17 |
|
---|
| 18 | ## Usage
|
---|
| 19 |
|
---|
| 20 | Simply pass the streams you want to pipe together to pump and add an optional callback
|
---|
| 21 |
|
---|
| 22 | ``` js
|
---|
| 23 | var pump = require('pump')
|
---|
| 24 | var fs = require('fs')
|
---|
| 25 |
|
---|
| 26 | var source = fs.createReadStream('/dev/random')
|
---|
| 27 | var dest = fs.createWriteStream('/dev/null')
|
---|
| 28 |
|
---|
| 29 | pump(source, dest, function(err) {
|
---|
| 30 | console.log('pipe finished', err)
|
---|
| 31 | })
|
---|
| 32 |
|
---|
| 33 | setTimeout(function() {
|
---|
| 34 | dest.destroy() // when dest is closed pump will destroy source
|
---|
| 35 | }, 1000)
|
---|
| 36 | ```
|
---|
| 37 |
|
---|
| 38 | You can use pump to pipe more than two streams together as well
|
---|
| 39 |
|
---|
| 40 | ``` js
|
---|
| 41 | var transform = someTransformStream()
|
---|
| 42 |
|
---|
| 43 | pump(source, transform, anotherTransform, dest, function(err) {
|
---|
| 44 | console.log('pipe finished', err)
|
---|
| 45 | })
|
---|
| 46 | ```
|
---|
| 47 |
|
---|
| 48 | If `source`, `transform`, `anotherTransform` or `dest` closes all of them will be destroyed.
|
---|
| 49 |
|
---|
| 50 | Similarly to `stream.pipe()`, `pump()` returns the last stream passed in, so you can do:
|
---|
| 51 |
|
---|
| 52 | ```
|
---|
| 53 | return pump(s1, s2) // returns s2
|
---|
| 54 | ```
|
---|
| 55 |
|
---|
| 56 | If you want to return a stream that combines *both* s1 and s2 to a single stream use
|
---|
| 57 | [pumpify](https://github.com/mafintosh/pumpify) instead.
|
---|
| 58 |
|
---|
| 59 | ## License
|
---|
| 60 |
|
---|
| 61 | MIT
|
---|
| 62 |
|
---|
| 63 | ## Related
|
---|
| 64 |
|
---|
| 65 | `pump` is part of the [mississippi stream utility collection](https://github.com/maxogden/mississippi) which includes more useful stream modules similar to this one.
|
---|