как мне ждать задания в серии GULP4 - PullRequest
0 голосов
/ 10 апреля 2019

У меня ошибка "Не удалось найти файл SVG" в задаче 'svg: inject'.

Так что же происходит: задача 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 file:

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

Ответы [ 2 ]

1 голос
/ 10 апреля 2019

Возврат потока вместо использования обратного вызова 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/'))
));
0 голосов
/ 10 апреля 2019

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));
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...