在通过gulp处理文件,
处理过程中得到一个文件内容对应的buffer,
与此同时,有一个gulp的任务(transform流)刚好可以处理刚刚提到的buffer,
问下如何使用这个transform流来处理buffer得到处理结果的buffer?
import { Transform, Readable } from 'stream'
import { src, dest } from 'gulp'
import terser from 'gulp-terser'
export function jsTask() {
// 只是示例代码,实际上不是用一个new Transform的transform包裹terser
return src('./src/**/*.js').pipe(new Transform({
objectMode: true,
transform(chunk, encoding, callback) {
// 这个是得到的buffer
const buffer = chunk.contents
// 后续操作怎么处理?
// 直接用write(chunk)会不知道从哪意外调用到process.exit
terser({}).write(chunk)
// 试过使用Readable把buffer转为可读流,再通过pipe操作
// 会报错流过早被关闭(Error: premature close)
const readable = new Readable({
read() {
this.push(buffer)
}
})
readable.pipe(terser({}))
},
})).pipe(dest('./dist'))
}