如何在through2中调用别人的插件?

发布于 2022-09-04 15:20:51 字数 1217 浏览 13 评论 0

背景
首次写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'));
});

我的尝试

  1. 如果我直接在*here*处这样写file.pipe(svg2png())会得到另外一个Stream,所以还是回到问题上来,如何处理through中新建的流?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文