我使用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在哪里输出每个目的地的处理内容,以便每个来源都有不同的目的地?
答案 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 文件夹。