2016-06-27 3 views
0

私は一口ファイル内のスプライトタスクを持っている:module.exportsが関数ではなくGulpタスクを参照するとき、Gulpfileは機能しませんか?

var sprite = function() { 
    // Do something 
}; 

module.exports = { 
    sprite: sprite 
}; 

これは働いていたが、私は今、実行する前に、スプライトのタスクにannotherタスクを必要としています。

ReferenceError: sprite is not defined 

module.exportsは「のスプライトを認識しているようです:

var spriteFirst = function() { 
    // Do something first 
}; 

var spriteSecond = function() { 
    // Do something second 
}; 

gulp.task('sprite', function(callback) { 
    runSequence('spriteFirst', 'spriteSecond', 
    callback); 
}); 

module.exports = { 
    sprite: sprite 
}; 

このコードは私に次のエラーを与える:イムrunSequenceを使用して、私は、スプライトのタスクを実行する前に完了するために、この先行タスクを必要とします'それは通常の関数だが、Gulpタスクの場合はそうではない。これは正しいです?もしそうなら、なぜこの場合ですか?

+0

使用gulp4は、あなたがネイティブ関数を使用することができ、そしてあなたもいけないrunSequenceを必要とする:次のようになります。あなたのコードを意味

YOU

答えて

1

ガルスタスクはではなく、の通常のJavaScript関数です。各グループタスクは、という名前の,の機能、および(オプションで)という名前の他のタスクの名前で構成されています。これらの情報はすべてgulpインスタンスに格納されています。

spriteをソースコードで参照すると、Node.jsはその名前でvarまたはfunctionを見つけようとします。しかし、gulp.task()varまたはfunctionを作成しないため、1つもありません。これは、単にという名前ファンクションを新しいタスクオブジェクトとしてgulpインスタンスに格納します。

spriteFirstというタスクをrunSequence()で実行すると、そのタスクをgulp.task()で定義することはできません。何が起きるかは、runSequence()は、という名前のタスクオブジェクトのインスタンスをgulpで検索します。しかし、あなたはspriteFirstという名前の関数しか宣言していないので、1つもありません。 gulp.task()を使用してタスクオブジェクトを作成する必要があります。

var spriteFirst = function() { 
    // Do something first 
}; 

var spriteSecond = function() { 
    // Do something second 
}; 

var sprite = function(callback) { 
    runSequence('spriteFirst', 'spriteSecond', 
    callback); 
}; 

gulp.task('spriteFirst', spriteFirst); 
gulp.task('spriteSecond', spriteSecond); 
gulp.task('sprite', sprite); 

module.exports = { 
    sprite: sprite 
}; 
関連する問題