我怎样才能 运行 一个 gulp imagemin 任务只对新的和改变的文件?
How can I run a gulp imagemin task only on new and changed files?
我尝试添加如下所示的 gulp 任务和 运行 gulp 图像,以便它仅 运行s 仅在 added/changed 文件上 但是,这似乎行不通...有什么想法吗?
gulp.task('images', function (event) {
switch (event.type)
{
case 'added':
case 'changed':
gulp.src(event.path)
return gulp.src(config.images.src)
.pipe(imagemin({
optimizationLevel: 5,
progressive: true,
svgoPlugins: [{removeViewBox: false}],
use: [pngcrush()]
}))
.pipe(gulp.dest(config.images.dest));
break;
}
});
您可以使用 gulp-newer 只传递较新的文件。
在 imagemin 之前插入一个管道,目标文件夹作为参数。
gulp.task('images', function (event) {
gulp.src(event.path)
return gulp.src(config.images.src)
.pipe(newer(config.images.dest))
.pipe(imagemin({
optimizationLevel: 5,
progressive: true,
svgoPlugins: [{removeViewBox: false}],
use: [pngcrush()]
}))
.pipe(gulp.dest(config.images.dest));
});
除了@Headwiki提到的gulp-newer
之外,另一个流行的工具是gulp-changed
。
根据您的确切需求,gulp-newer
或 gulp-changed
可能更好……或者对于您的项目而言,这可能不会有所不同。有关更多信息,请参阅问题 "gulp-newer vs gulp-changed?"
我尝试添加如下所示的 gulp 任务和 运行 gulp 图像,以便它仅 运行s 仅在 added/changed 文件上 但是,这似乎行不通...有什么想法吗?
gulp.task('images', function (event) {
switch (event.type)
{
case 'added':
case 'changed':
gulp.src(event.path)
return gulp.src(config.images.src)
.pipe(imagemin({
optimizationLevel: 5,
progressive: true,
svgoPlugins: [{removeViewBox: false}],
use: [pngcrush()]
}))
.pipe(gulp.dest(config.images.dest));
break;
}
});
您可以使用 gulp-newer 只传递较新的文件。
在 imagemin 之前插入一个管道,目标文件夹作为参数。
gulp.task('images', function (event) {
gulp.src(event.path)
return gulp.src(config.images.src)
.pipe(newer(config.images.dest))
.pipe(imagemin({
optimizationLevel: 5,
progressive: true,
svgoPlugins: [{removeViewBox: false}],
use: [pngcrush()]
}))
.pipe(gulp.dest(config.images.dest));
});
除了@Headwiki提到的gulp-newer
之外,另一个流行的工具是gulp-changed
。
根据您的确切需求,gulp-newer
或 gulp-changed
可能更好……或者对于您的项目而言,这可能不会有所不同。有关更多信息,请参阅问题 "gulp-newer vs gulp-changed?"