我如何才能 运行 一个 gulp 任务只对新的和改变的文件?
How can I run a gulp task only on new and changed files?
我正在尝试使用 gulp-imagemin 来优化我项目中的图像。但是我只想 运行 imagemin 仅当添加新图像或更改当前图像时。我只想 运行 它只在 new/changed 图像上。
有人建议使用更改并添加这样的事件:
gulp.watch( [ 'myfolder/**/*.png', 'myfolder/**/*.svg' ] )
.on( "change", function(file){
console.log("change");
// do imagemin stuff here
} );
但是 "change" 事件没有被调用。我还尝试了 "add" 事件,结果相同。
我对 gulp 的了解仍然有限,我不知道该怎么做。那么我如何才能 运行 imagemin 仅在新的/更改的图像上?
我想出了一个方法让事情正常进行。
gulp.watch( [ 'myfolder/**/*.png', 'myfolder/**/*.svg' ], function (event) {
switch (event.type)
{
case 'added':
case 'changed':
gulp.src( event.path )
.pipe( imagemin({
optimizationLevel: 5,
progressive: true,
svgoPlugins: [{removeViewBox: false}],
use: [pngquant()]
}) )
.pipe( gulp.dest( strImgDest ) );
break;
}
} );
这是最好的方法吗?我不知道。我的问题几乎没有受到社区的关注。但它确实对我有用。我希望这对将来的人有所帮助。
我正在尝试使用 gulp-imagemin 来优化我项目中的图像。但是我只想 运行 imagemin 仅当添加新图像或更改当前图像时。我只想 运行 它只在 new/changed 图像上。
有人建议使用更改并添加这样的事件:
gulp.watch( [ 'myfolder/**/*.png', 'myfolder/**/*.svg' ] )
.on( "change", function(file){
console.log("change");
// do imagemin stuff here
} );
但是 "change" 事件没有被调用。我还尝试了 "add" 事件,结果相同。
我对 gulp 的了解仍然有限,我不知道该怎么做。那么我如何才能 运行 imagemin 仅在新的/更改的图像上?
我想出了一个方法让事情正常进行。
gulp.watch( [ 'myfolder/**/*.png', 'myfolder/**/*.svg' ], function (event) {
switch (event.type)
{
case 'added':
case 'changed':
gulp.src( event.path )
.pipe( imagemin({
optimizationLevel: 5,
progressive: true,
svgoPlugins: [{removeViewBox: false}],
use: [pngquant()]
}) )
.pipe( gulp.dest( strImgDest ) );
break;
}
} );
这是最好的方法吗?我不知道。我的问题几乎没有受到社区的关注。但它确实对我有用。我希望这对将来的人有所帮助。