#javascript #node.js #gulp
#javascript #node.js #глоток
Вопрос:
У меня ошибка «Не удалось найти файл 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 файл:
<div class="hide">
<img src="sprite.svg">
</div>
Ответ №1:
Верните поток вместо использования обратного 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/'))
));
Комментарии:
1. Спасибо! Но у меня есть еще один вопрос выше. Пожалуйста, помогите мне
Ответ №2:
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));
};
Комментарии:
1. Еще раз добавьте
return
операторы передgetTask
иgulp.src
.2. Спасибо. Это помогает. Почему оператор ‘return’ решил проблему?