Gulp:如何在一个任务中设置多个源和目的地?

时间:2015-05-30 15:21:46

标签: gulp gulp-imagemin

我使用list_pos(Xs, E, Ps) :- ( ground(Xs) -> true ; throw(error(instantiation_error,_)) ), ( length(Xs,_) -> true ; throw(error(type_error(list,Xs),_)) ), bagof(P, nth0(P, Xs, E), Ps). ?- list_pos([a,b,c,c,a,a], E, Rs). E = a, Rs = [0, 4, 5] ; E = b, Rs = [1] ; E = c, Rs = [2, 3]. 缩小gulp-imagemin文件夹中的图片。任务的输出应流式传输到images目录。但是,源dist/images文件夹有一个子文件夹images,其压缩内容应流式传输到images/headers。所以这是源文件夹结构:

dist/images/headers

其内容应该流式传输到:

-images
  -headers

目前我的任务定义如下:

-dist
  -images (contents of `images`)
    -headers (contents of `images/headers`)

我的问题是如何告诉Gulp将gulp.task('compress', function () { return gulp.src('images/*') .pipe(imagemin({ progressive: true, svgoPlugins: [{removeViewBox: false}], use: [pngquant()] })) .pipe(gulp.dest('dist/images')); }); 传输到images/headers而不为其编写单独的任务。

我知道我可以传递数组来源,但是我可以告诉Gulp在哪里输出每个目的地的处理内容,以便每个来源都有不同的目的地?

1 个答案:

答案 0 :(得分:1)

你应该使用递归的glob。现在,您只是直接在images文件夹中观看更改。不要使用 gulp.src(' images / *'),而应使用 gulp.src(' images / ' )**。

您的新任务将如下所示:

gulp.task('compress', function () {
    return gulp.src('images/**')
        .pipe(imagemin({
            progressive: true,
            svgoPlugins: [{removeViewBox: false}],
            use: [pngquant()]
        }))
        .pipe(gulp.dest('dist/images'));
});

这会将位于 images 文件夹及其下方的每张图片处理到 dist / images 文件夹。