如何在nodejs中使用一系列的transform流转换一个buffer?

在通过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'))
}
阅读 2k
1 个回答

03H[`WYLMTBOV18OM~$%)KD.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题