我正在尝试使用Gulp在几个不同的位置优化图像。这是目录结构:
|-- app
|-- _images
-- image1.jpg
-- image2.jpg
|-- _templates
|-- _pages
|--_services
|--_images
-- image1.jpg
-- image2.jpg
这是代码
gulp.task('images:tmp', function() {
return gulp.src(['app/templates/pages/**/*.{png,jpg,gif,svg}', 'app/images/**/*.{png,jpg,gif,svg}'], {base: 'app/'})
// Caching images that ran through imagemin
.pipe(cache(imagemin({
interlaced: true,
})))
.pipe(gulp.dest('.tmp'))
});
我遇到的问题是应用程序的“模板”和“页面”目录被复制到“.tmp”的根目录以及“services”目录中:
|-- .tmp
|-- _images
-- image1.jpg
-- image2.jpg
|-- _templates
|-- _pages
|--_services
|--_images
-- image1.jpg
-- image2.jpg
我只想要root中的“services”目录,如下所示:
|-- .tmp
|-- _images
-- image1.jpg
-- image2.jpg
|-- _services
|--_images
-- image1.jpg
-- image2.jpg
如何编写任务以复制上面的目录结构?在此先感谢您的帮助!
答案 0 :(得分:0)
(我不能将其添加为评论)
根据https://github.com/gulpjs/gulp/blob/master/docs/recipes/using-multiple-sources-in-one-task.md处的食谱将您的源流拆分为两个流并返回合并流:
var merge = require('merge-stream');
gulp.task('images:tmp', function() {
var stream1 = gulp.src('app/templates/pages/**/*.{png,jpg,gif,svg}')
.pipe(cache(imagemin({interlaced: true})))
.pipe(gulp.dest('.tmp'))
);
var stream1 = gulp.src('app/images/**/*.{png,jpg,gif,svg}',{base: 'app/'})
.pipe(cache(imagemin({interlaced: true})))
.pipe(gulp.dest('.tmp'))
);
return merge(stream1,stream2);
});
答案 1 :(得分:0)
谢谢,毛泽东。在编辑第二个“var stream1”以读取“var stream2”并删除明显多余的内容后,这对我有用;来自溪流。
gulp.task('images:tmp', function() {
var stream1 = gulp.src('app/templates/pages/**/*.{png,jpg,gif,svg}')
.pipe(cache(imagemin({interlaced: true})))
.pipe(gulp.dest('.tmp'));
var stream2 = gulp.src('app/images/**/*.{png,jpg,gif,svg}',{base: 'app/'})
.pipe(cache(imagemin({interlaced: true})))
.pipe(gulp.dest('.tmp'));
return merge(stream1,stream2);
});