2016-09-12 17 views
1

gulp.srcgulp.watchから取得された変更されたファイルのパスをGulp(4.0)がエラー"Error: Invalid glob argument: undefined"に送信しようとしました。どちらもこの:Gulp腕時計イベントオブジェクトが表示されない

gulp.task('watch', function() { 
    gulp.watch('./web/**/*.html') 
     .on('change', function(file) { 
      gulp.src(file.path) 
       .pipe(gulp.dest('./output')); 
     }); 
}); 

と、この構文バリアント:

gulp.task('watch', function() { 
    gulp.watch('./web/**/*.html', function(file) { 
     gulp.src(file.path) 
      .pipe(gulp.dest('./output')); 
    }); 
}); 

は、同じ結果が得られます。

gulp.srcの前にfile.pathを記録すると、 "undefined"も出力されます。

npm install -g [email protected]:gulpjs/gulp#4.0

をと含むgulpfile.js作成:

例のいずれかに続いて

const gulp = require('gulp');

を再現する

これは、変更されたファイルのパスにアクセスできるようにする方法です(as per the docs)ので、どこが間違っているのかわかりません。

答えて

1

このドキュメントはすべて間違っています。たとえば、gazeイベントについて語っていますが、gazeは、gulp 4.0のファイルの変更を監視するためには使用されなくなりました。それはchokidarに置き換えられました。

問題については、ファイルパスにアクセスする方法に関してドキュメントが間違っています。 .on('change')コールバック関数はeventオブジェクトに渡されないため、.pathプロパティはありません。

あなたの最初の例は次のようになりますので、代わりにファイルパスは、文字列として渡されます。

gulp.task('watch', function() { 
    gulp.watch('./web/**/*.html') 
     .on('change', function(file) { 
      gulp.src(file) 
       .pipe(gulp.dest('./output')); 
     }); 
}); 

あなたの第二の例では、コールバック関数がすべてでパスを受け取りません。 gulp.series()またはgulp.parallel()を介してタスクの実行を容易にするために、doneコールバックが渡されます。

+0

Vielen Dank!それは確かに問題です。説明する時間をとってくれてありがとう。うまくいけば、これは同じ頭痛の他者のためのリソースとして役立つ。 –

関連する問題