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.
|
---|