背景
首次写gulp插件,我想写一个gulp插件,根据官方文档,建议使用through2处理Stream流。实现的功能是,将src为svg的文件,先变成png,然后再变成base64,渲染到一个css文件模板。
遇到的问题
不知道如何在through2中调用别人的插件
//index.js
var through = require('through2');
var svg2png = require('gulp-svg2png');
function dealWithSVG() {
if (file.isNull()) {
return cb(null, file);
}
if (file.isStream()) {
this.emit('error', new GulpError(PLUGIN_NAME, 'Streaming not supported'));
return cb();
}
/* I want to use svg2png() *here* */
// Other Function
// ...
this.push(file);
cb(null)
});
}
module.exports = dealWithSVG;
// gulpfile.js
var gulp = require('gulp');
var dealWithSVG = require('./index');
var svg2png = require('gulp-svg2png')
gulp.task('default', function () {
return gulp.src('static/*.svg')
.pipe(dealWithSVG())
.pipe(gulp.dest('assets'));
});
我的尝试
如果我直接在*here*处这样写file.pipe(svg2png())
会得到另外一个Stream,所以还是回到问题上来,如何处理through中新建的流?
人生最曼妙的风景,竟是内心的淡定与从容!