How to set gulp.dest() in same directory as pipe inputs?

前端 未结 3 1323
被撕碎了的回忆
被撕碎了的回忆 2020-12-13 02:14

I need all the found images in each of the directories to be optimized and recorded into them without setting the path to the each folder separately. I don\'t understand how

3条回答
  •  無奈伤痛
    2020-12-13 02:21

    Here are two answers.
    First: It is longer, less flexible and needs additional modules, but it works 20% faster and gives you logs for every folder.

    var merge = require('merge-stream');
    
    var folders =
    [
        "./pictures/news/",
        "./pictures/product/original/",
        "./pictures/product/big/",
        "./pictures/product/middle/",
        "./pictures/product/xsmall/",
        ...
    ];
    
    gulp.task('optimizeImgs', function () {
    
        var tasks = folders.map(function (element) {
    
            return gulp.src(element + '*')
                .pipe(sometingToDo())
                .pipe(gulp.dest(element));
    
        });
    
        return merge(tasks);
    
    });
    

    Second solution: It's flexible and elegant, but slower. I prefer it.

    return gulp.src('./pictures/**/*')
        .pipe(somethingToDo())
        .pipe(gulp.dest(function (file) {
            return file.base;
        }));
    

提交回复
热议问题