2017-02-09 13 views
1

私は以下のようなgulpタスクを追加しようとし、gulpイメージを実行して、追加/変更されたファイル上でのみ実行するようにしました。gulp imageminタスクは、新しいファイルや変更されたファイルに対してのみ実行できますか?

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; 
    } 
}); 

答えて

4

gulp-newerを使用すると、新しいファイルのみを渡すことができます。

ターゲットフォルダをパラメータとしてimageminの前にパイプを挿入します。 gulp-newerほかに

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)); 
}); 
+0

を参照してください。しかし、ファイルが変更されても全く新しいファイルではない場合はどうなりますか?それはうまくいくのだろうか? –

+0

変更された時間を使用して、srcファイルがdestファイルより新しいかどうかを判断します。したがって、ファイルの変更によって変更された時刻が更新された場合は、正常に機能します。 – Headwiki

1

@Headwikiで述べたように、このための他の一般的なツールはgulp-changedです。

あなたの正確なニーズに応じてgulp-newerまたはgulp-changedはもっと良いかもしれません...あなたのプロジェクトにとっては違うかもしれません。詳細については、質問"gulp-newer vs gulp-changed?"

関連する問題