_gulpfile.js
_で既に定義されているいくつかのタスクがあり、_gulp-watch
_プラグインを使用したい(新しいファイルでタスクを実行する)。私の質問は、何も見つからなかったため、ウォッチ(プラグインから)機能を実行中に既存のタスクを実行できますか?
_var gulp = require('gulp'),
watch = require('gulp-watch'),
...;
gulp.task('lint', function () {
return gulp.src(path.scripts)
.pipe(jshint())
.pipe(jshint.reporter(stylish));
});
gulp.task('watch', function () {
watch({ glob: 'app/**/*.js' }); // Run 'lint' task for those files
});
_
持っているすべてのタスクにwatch()
タスクを含めたくないからです。タスクを1つだけにしたい-ウォッチ、これはすべての「ウォッチ」を結合します。
-----編集----(私はおそらく自分の主張を十分に理解できなかったので):
gulp('watch')
タスクの内部からタスクを実行する必要があります。例えば:
_gulp.watch
_でやったように:
_gulp.task('watch', function () {
gulp.watch('files', ['task1', 'task2']);
});
_
私は同じことをする必要がありますが、_gulp-watch
_プラグインでは、次のようなものです(動作しないことはわかっています):
_var watch = require('gulp-watch');
gulp.task('watch', function () {
watch({ glob: 'files' }, ['task1', 'task2']);
});
_
また、gulp-watch(gulp.watchではなく)を使用したいという問題、コールバックフォームを使用する必要があり、コールバックでタスクを実行する適切な方法を見つけるのに苦労しています。
私のユースケースは、すべてのスタイラスファイルを監視したいが、他のすべてを含むメインのスタイラスファイルのみを処理することでした。 gulp-watchの新しいバージョンはこれに対処するかもしれませんが、4.3.xで問題が発生しているため、4.2.5に固執しています。
好きなのを選びな。
var gulp = require('gulp'),
watch = require('gulp-watch'), // not gulp.watch
runSequence = require('run-sequence');
// plain old js function
var runStylus = function() {
return gulp.src('index.styl')
.pipe(...) // process single file
}
gulp.task('stylus', runStylus);
gulp.task('watch', function() {
// watch many files
watch('*.styl', function() {
runSequence('stylus');
OR
gulp.start('stylus');
OR
runStylus();
});
});
これらはすべて警告なしで機能していますが、4.2.xバージョンのgulp-watchから「完了」コールバックを取得することについてはまだ確信が持てません。
ほとんどの場合、監視しているファイルに関連する特定のタスクを実行する必要があります-
gulp.task('watch',['lint'], function () {
gulp.watch('app/**/*.js' , ['lint']);
});
['lint']
部分を使用して、ウォッチが最初に呼び出されたときに必要なタスクを実行したり、タスクを利用して非同期で実行したりすることもできます。
gulp.task('default', ['lint','watch'])
1つのタスクを呼び出すだけで、両方のタスクを含めることができます
gulp.task('default', ['lint','watch'])
ここでは、「gulp」と呼ぶだけです
gulp.task('watch', function() {
watch(files, function() {
gulp.run(['task1', 'task2']);
});
});
警告を除いて、正常に動作します