17

現在、タスクを子プロセスに生成する必要があるいくつかの手順を実行しようとしています。例えば:

  1. ファイルを見る
  2. Static Site Generator のプレビュー サーバーを起動する

grunt-concurrent のようなタスクを簡単に使用して、これらの両方を同時に実行できます。ただし、grunt を終了すると、子プロセス (この場合はgrunt-shellを使用して実行している静的サイト ジェネレーター) が実行され続けます。これらのタスクを同時に実行したいのですが、うなり声が終了したときにそれらを強制終了することもできます。

考え?

4

5 に答える 5

1

これが grunt-shell でどのように機能するかわかりません。ただし、サーバーを実行するカスタム grunt タスクをセットアップする場合は、次のようなことを試すことができます。

  var spawn = require('child_process').spawn;
  var server = spawn('myserver', ['--foo']);
  process.on('exit', function() {
     grunt.log.writeln('killing myserver...');
     server.kill();
     grunt.log.writeln('killed myserver');
  });
于 2013-05-24T13:02:33.007 に答える
0

どうやら、終了イベントgrunt-shellを処理しません: https://github.com/sindresorhus/grunt-shell/blob/master/tasks/shell.jsprocess

したがって、うなり声プロセスが終了してgrunt-shellいると思われ、親プロセスが停止していることを子プロセスに警告することはありません。

たとえば、grunt-concurrent次のように子プロセスを強制終了します。

process.on('exit', function () {
    cpCache.forEach(function (el) {
        el.kill();
    });
});

ソース: https://github.com/sindresorhus/grunt-concurrent/blob/master/tasks/concurrent.js#L55

したがって、使用してgrunt-shellもうまくいきません。

1 つの解決策はwintersmith、Gruntfile で require し、カスタム タスクでプログラム的に実行することです。

于 2015-01-07T23:25:34.020 に答える
0

https://stackoverflow.com/a/32057486/626810で私の回答を参照してください。

これは、明示的に呼び出す必要があるスクリプトがある場合に便利です (例: そのプロセスがデーモン化されている場合)。

于 2015-08-17T18:45:49.850 に答える
0

おそらくこれがgrunt-exitが作成された理由です。

于 2014-03-26T20:54:50.540 に答える