目的: 将比较少的缓存放入到内存中
readable
writeable
transform
duplex
classic
drain(.write()返回false时处理完积压数据后触发)
error (设置-head时需处理)
finished (after end)
pipe/unpipe
2 Modes 触发条件
flowing : ‘data’/ resume() /pipe()
paused : pause()/ unpipe()
gulp使用的不是 Node stream 而是 Vinyl File Object Stream ,vinyl: 虚拟文件格式 Vinyl主要用两个属性来描述文件,它们分别是路径(path)及内容(contents), gulp使用了vinyl-fs模块,特点:保留了路径的文件树
var File = require('vinyl');
var coffeeFile = new File({
cwd: "/",
base: "/test/",
path: "/test/file.coffee",
contents: new Buffer("test = 123")
});
contents的三种类型:
1.Stream 2.Buffer 3.null
(personal opinion:此处的Buffer并不是NodeJs中Buffer概念,只是为了区分是否以stream模式传输,NodeJs中的Buffer是stream传输的一种模式,另外两种是string 与 object)
.src() 生成Vinyl File Object .dest()将使用Vinyl File Object,进行写入操作。
gulp-uglify只支持Buffer模式的contents,可用vinyl-buffer转换