9

gulp-imagemin を使用して画像を圧縮する gulp タスクがあります。このディレクトリに新しいファイルを追加するとき、このタスクでそれらも圧縮したいと思います。gulp.watch は新しいファイルでトリガーされず、gulp -watch を試す必要があることを読んだので、そのように使用しました。

gulp.task('images', function() {
  watch({glob: './source/images/*'}, function (files) {
    return files
      .pipe(plumber())
      .pipe(imagemin({
        progressive: true,
        interlaced: true
      }))
      .pipe(gulp.dest('./www'));
  });
});

これは、最初の実行では gulp.watch と同じように機能しますが、ディレクトリに新しい画像を追加しても何も起こりません。ただし、既存のファイルを上書きすると、タスクが再度実行されるため、動作が異なります。

gulp-watch のドキュメントでは、これを「バッチ モード」と呼び、ファイルごとにタスクを実行することもできると述べていたので、この方法も試しました。

gulp.task('images', function() {
  gulp.src('./source/images/*')
    .pipe(watch())
    .pipe(plumber())
    .pipe(imagemin({
      progressive: true,
      interlaced: true
    }))
    .pipe(gulp.dest('./www'));
});

しかし、何も変わりませんでした。画像ディレクトリにファイルを追加してもタスクがトリガーされないのはなぜですか?

4

2 に答える 2

18

追加の引数{cwd:'./'}を追加するとgulp.watchうまくいきました:

gulp.watch('src/js/**/*.js',{cwd:'./'},['scripts']);

これを機能させるための2つのこと

1./ファイル/フォルダーのパターンで避ける

2./の値を確認してくださいcwd

幸運を。

参照: - https://stackoverflow.com/a/34346524/4742733

于 2016-06-11T14:00:57.680 に答える
8

この種の質問は、OS 上で複雑な監視手順を実行する、 gazeパッケージとその内部プロセスにリダイレクトされる可能性が最も高いです。この場合images/**/*、glob オプションに渡す必要があるため、gaze は images ディレクトリ内のすべての (新しいファイルを含む) ファイルを監視します。

var gulp = require('gulp');
var watch = require('gulp-watch');
var imagemin = require('gulp-imagemin');

gulp.task('default', function() {
    watch({glob: 'images/**/*'}, function (files) {
      files.pipe(imagemin({
        progressive: true,
        interlaced: true
      }))
      .pipe(gulp.dest('./www'));
    });
});

ただし、画像ディレクトリが空の場合、これはケースを修正しません。それらを監視したい場合は、['images', 'images/**/*']グロブに渡すと、最初は空のディレクトリが監視されます。

Ps またgulp-plumber、この場合は不要です。watch は、imagemin がエラーをポップした場合でも、毎回 imagemin を使用する関数を再実行するためです。

于 2014-06-19T02:59:53.420 に答える