如何仅对新文件和更改的文件运行gulp imagemin任务?
我尝试添加一个像下面这样的gulp任务,并运行gulp图像,这样它只在添加/更改的文件上运行,但是,这似乎不起作用…有什么想法吗如何仅对新文件和更改的文件运行gulp imagemin任务?,gulp,gulp-imagemin,Gulp,Gulp Imagemin,我尝试添加一个像下面这样的gulp任务,并运行gulp图像,这样它只在添加/更改的文件上运行,但是,这似乎不起作用…有什么想法吗 gulp.task('images', function (event) { switch (event.type) { case 'added': case 'changed': gulp.src(event.path) return gulp.src(config.images.src) .p
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;
}
});
您可以使用仅传递较新的文件
将目标文件夹作为参数,在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 newer
或gulp changed
可能会更好……或者对于您的项目来说,可能不会有什么不同。有关这方面的更多信息,请参见问题听起来不错。但是,如果文件发生更改,但不完全是一个全新的文件,该怎么办?这行吗?它使用修改后的时间来确定src文件是否比dest文件新。因此,如果文件更改更新了修改的时间,那么是的,它会工作。我认为如果您发送一个路径,如果任何文件已更改,则每个文件都将通过管道传输。