Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
pipe streams together and close all of them if one of them closes
branch: master


latest commit dc0a3c33ac
@mafintosh authored
Failed to load latest commit information.
.gitignore first commit
.travis.yml travis
LICENSE add full license text flat logo
index.js missing another noop
package.json 1.0.0
test.js first commit


pump is a small node module that pipes streams together and destroys all of them if one of them closes.

npm install pump

build status

What problem does it solve?

When using standard source.pipe(dest) source will not be destroyed if dest emits close or an error. You are also not able to provide a callback to tell when then pipe has finished.

pump does these two things for you


Simply pass the streams you want to pipe together to pump and add an optional callback

var pump = require('pump');
var fs = require('fs');

var source = fs.createReadStream('/dev/random');
var dest = fs.createWriteStream('/dev/null');

pump(source, dest, function(err) {
    console.log('pipe finished', err);

setTimeout(function() {
    dest.destroy(); // when dest is closed pump will destroy source
}, 1000);

You can use pump to pipe more than two streams together as well

var transform = someTransformStream();

pump(source, transform, anotherTransform, dest, function(err) {
    console.log('pipe finished', err);

If source, transform, anotherTransform or dest closes all of them will be destroyed.



Something went wrong with that request. Please try again.