在Gulp dest中复制目录结构

时间:2016-06-24 14:06:58

标签: gulp

我正在尝试使用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

如何编写任务以复制上面的目录结构?在此先感谢您的帮助!

2 个答案:

答案 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);
});