任务'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>
答案 0 :(得分: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 :(得分:0)
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));
};