2016-04-25 10 views
6

変更のために現在のフォルダを含むすべてのフォルダを監視する必要があります。したがって、私は'./**/*.js'を見ると、CPU使用量が過剰になります

gulp.task('start',() => { 
    if (node) node.kill() 
    node = spawn('node', ['server.js'], { 
     stdio: 'inherit' 
    }) 
    node.on('close', function(code) { 
     if (code === 8) { 
      gulp.log('Error detected, waiting for changes...'); 
     } 
    }); 
}); 

gulp.watch(['./**/*.js'], ['start']); 

gulp.task('default', ['start', 'watch']); 

process.on('exit', function() { 
    if (node) node.kill() 
}); 

を使用しますが、100%のCPU使用率が発生します。 'api/**/*。js`のような単一のフォルダ(監視する必要のあるすべてのファイルの99%を含む)にしか使用しない場合は、CPU使用率はほとんどありません。

私は間違っていますか?

+0

明白なことを明確化: - 高と低CPU使用の間(> 'api'' .')、または何か他のテストの間で変更されている可能性があり、あなたはそれが唯一の変化だと確信していますか? –

+0

腕時計タスク自体は、CPU使用の責任を負いません。あなたの 'start'タスクと何をしているのかを見せてください。 –

+0

@JamesThorpeもう一度もう一度チェックしました。私が郵便で説明したことは、今の場合です。 また、質問に 'start'コードを追加しました。 – Hedge

答えて

11

あなたのプロジェクトのすべてのディレクトリとサブディレクトリにある.js個のファイルすべてを見ています。これにはnode_modulesが含まれます。あなたのプロジェクトにどれだけの依存関係があるか、依存関係の数などによっては、何千もの.jsファイルを見ているかもしれません。

あなたは、ソースファイルが置かれているだけで、これらのディレクトリにあなたの時計のグロブを制限する必要があります。

gulp.watch(['api/**/*.js', 'app/**/*.js', ...], ['start']); 

また、あなたのnode_modulesフォルダを除外しようとすると、あなたのようなソースファイルが含まれていない任意の他のフォルダ(することができます先のフォルダを構築する):

gulp.watch(['api/**/*.js', '!node_modules/**/*.js', ...], ['start']); 
+0

ああ、どうすればそれを逃すことができますか?もちろん、それは 'node_modules'のためです – Hedge

14

一気のwatchは今、ほぼ2年間のknown CPU usage issuesがありました。これは、gulpがポーリング(fs.watchFile)を使用して変更を検出するためです。

  • これは伝えられるところバージョン< 4の場合(まだリリースされていない)グッ4.0
  • に固定されている、この問題を回避する推薦は、ポーリング間隔を増加させることです。

    gulp.watch('**/*.js', { interval: 2000 }, ...) 
    

    (デフォルトは100です)

  • @Sven's adviceも非常に健全である - あなたのnode_modulesを見たり、フォルダを構築する理由はおそらくありません。

関連する問題