陈鹏铭 93064e9f91 首次提交 vor 11 Monaten
..
.travis.yml 93064e9f91 首次提交 vor 11 Monaten
LICENSE 93064e9f91 首次提交 vor 11 Monaten
README.md 93064e9f91 首次提交 vor 11 Monaten
example.js 93064e9f91 首次提交 vor 11 Monaten
index.js 93064e9f91 首次提交 vor 11 Monaten
package.json 93064e9f91 首次提交 vor 11 Monaten
test.js 93064e9f91 首次提交 vor 11 Monaten

README.md

cloneable-readable

Greenkeeper badge

Build Status

Clone a Readable stream, safely.

'use strict'

var cloneable = require('cloneable-readable')
var fs = require('fs')
var pump = require('pump')

var stream = cloneable(fs.createReadStream('./package.json'))

pump(stream.clone(), fs.createWriteStream('./out1'))

// simulate some asynchronicity
setImmediate(function () {
  pump(stream, fs.createWriteStream('./out2'))
})

cloneable-readable automatically handles objectMode: true.

This module comes out of an healthy discussion on the 'right' way to clone a Readable in https://github.com/gulpjs/vinyl/issues/85 and https://github.com/nodejs/readable-stream/issues/202. This is my take.

YOU MUST PIPE ALL CLONES TO START THE FLOW

You can also attach 'data' and 'readable' events to them.

API

cloneable(stream)

Create a Cloneable stream. A Cloneable has a clone() method to create more clones. All clones must be resumed/piped to start the flow.

cloneable.isCloneable(stream)

Check if stream needs to be wrapped in a Cloneable or not.

Acknowledgements

This project was kindly sponsored by nearForm.

License

MIT