Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 我如何写一个简单的gulp管道函数?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在尝试一天写两个管道函数一个编译较少的文件和另一个,这些文件的concats。我想学习如何为更复杂的插件编写转换流/管道。

所以我想知道如何从另一个管道读取数据,以及如何更改该数据并将其发送到下一个管道。这是我到目前为止:

gulp.src(sources)
   .pipe(through.obj(function (chunk,enc,cb) {

     var t = this;
     // console.log("chunk",chunk.path);
     fs.readFile(chunk.path,function (err,data) {
       if (err) { cb(err); }

       less.render(data,{
         filename : chunk.path,sourceMap : {
           sourceMapRootpath : true
         }
       })
       .then(function (outputCss) {
          // console.log("less result",outputCss);
          t.push(chunk);// or this.push(outputCss) same result
          cb();
       });

     });

   }))
   .pipe(through.obj(function (chunk,cb) {
     console.log("chunk",chunk.path); // not event getting called.
     cb();
   }))

我不能得到第二个管道中每个文件的outputCSS。如何发送?

解决方法

好吧,你不需要在这里使用fs,你已经得到了文件流(这里是你的块)。

另一点,你不是发送回管道的文件,所以我想这就是为什么没有调用你的第二个。

var through = require('through2')

gulp.src(sources)
  .pipe(through.obj(function (chunk,cb) {
    console.log('chunk',chunk.path) // this should log Now
    cb(null,chunk)
  }))

在ES2015:

import through from 'through2'

gulp.src(sources)
  .pipe(through.obj((chunk,cb) => cb(null,chunk)))

并为您的具体示例:

.pipe(through.obj(function (file,cb) {
  less.render(file.contents,{ filename: file.path,... }) // add other options
    .then(function (res) {
      file.contents = new Buffer(res.css)
    })

  cb(null,file)
}))

这仍然很基本,我不检查错误,如果它不是一个流等,但这应该给你一些提示你错过了什么。

大佬总结

以上是大佬教程为你收集整理的node.js – 我如何写一个简单的gulp管道函数?全部内容,希望文章能够帮你解决node.js – 我如何写一个简单的gulp管道函数?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: