簡體   English   中英

我如何等待GULP4系列中的任務

[英]how do i wait for the task in GULP4 SERIES

我在任務'svg:inject'中出現錯誤“找不到文件SVG”。

所以發生了什么:任務'svg:sprite'生成文件sprite.svg。 然后在任務'svg:inject'中,我想使用此sprite.svg在html中移動它。 但是我有一個錯誤((

您對此行為及其解決方法有任何想法嗎?

gulp.task('svg:sprite', (done) => {
    gulp.src('./resources/svg/sprite/*.svg')
        .pipe(svgstore())
        .pipe(dest('./resources/svg/'));
    done();
});

gulp.task('svg:inject', gulp.series('svg:sprite', (done) => {
    gulp.src('./resources/svg/sprite-svg.html')
        .pipe(injectSvg({
            base: './resources/svg/'
        }))
        .pipe(dest('./resources/_code/templates/'));
    done();
}));

sprite-svg.html文件:

<div class="hide">
    <img src="sprite.svg">
</div>

返回流而不是使用done回調:

gulp.task('svg:sprite', () =>
  gulp.src('./resources/svg/sprite/*.svg')
    .pipe(svgstore())
    .pipe(gulp.dest('./resources/svg/'))
);

gulp.task('svg:inject', gulp.series('svg:sprite', () =>
  gulp.src('./resources/svg/sprite-svg.html')
    .pipe(injectSvg({
        base: './resources/svg/'
    }))
    .pipe(gulp.dest('./resources/_code/templates/'))
));

TheDancingCode謝謝! 它有助於。

但是有一個問題:我嘗試將require用於任務。 在這種情況下,我收到一條錯誤消息:

以下任務未完成:svg:inject,svg:sprite
您是否忘記了異步完成信號?

怎么了?

碼:

function getTask(task, path_src, path_dest) {
    return require('./tasks/' + task)(gulp, plugins, path_src, path_dest);
};

gulp.task('svg:sprite', () => {
    getTask('svg-sprite', CONFIG.src.svg_sprite, CONFIG.src.svg)
});

gulp.task('svg:inject', gulp.series('svg:sprite', () => {
    getTask('svg-inject', CONFIG.src.svg, CONFIG.src.html_templates)
}));

還有任務模塊的示例(svg-sprite.js):

module.exports = function (gulp, plugins, path_src, path_dest) {
    gulp.src(path_src)
        .pipe(plugins.svgstore())
        .pipe(gulp.dest(path_dest));
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM