11

私は小さなノードプロジェクトに取り組んでおり、クライアント側のコードにはCoffeescript以下を使用しています。gruntを使用して開発環境をセットアップしようとしています。次のようなサーバーを実行するためのカスタムgruntタスクを実装しました。

start = require './start' #just a function to start express.js application
grunt.registerTask 'server', 'Starting server', ->
    grunt.log.write 'Preparing server to start'
    done = do @async
    start (err) ->
        grunt.log.write "server running at localhost:4000"

また、grunt-contrib-watchプラグインを使用して「監視」タスクを実行したいと思います。

grunt.initConfig
    watch:
        coffee:
            files: ['public/coffee/**/*.coffee']
            tasks: ['coffee']
        jade:
            files: ['public/jade/**/*.jade']
            tasks: ['jade']
        less:
            files: ['public/less/**/*.less']
            tasks: ['less']

問題は、この2つのタスク(監視とサーバー)を同時に実行する方法です。サーバーを稼働させたいのですが、クライアント側のコードが変更されるたびにサーバーをリロードしたくありません。前もって感謝します

4

3 に答える 3

8

次の2つのパッケージのいずれかを使用して、2つ以上のタスクを同時に実行できます。

  1. うなり声-平行
  2. うなり声-並行
于 2013-10-23T07:46:30.703 に答える
5

done = do @asyncウォッチタスクのプレフィックスを付けて、サーバータスクの内部を取り除きます。

tasks: ['server', 'coffee']

Grunt構成で、サーバータスクを「長時間実行」するかどうかのオプションを指定する必要があります。次に@async、長時間実行する必要がある場合にのみ呼び出すことができます(監視タスクなし)。

于 2013-02-09T15:55:08.403 に答える
0

私は、うなり声のタスクから監視サーバーと接続サーバーの両方を起動できないという同じ問題を抱えていました。

この問題を解決するために、Gruntfileでgrunt-execを使用してバックグラウンドプロセスとしてサーバーを起動しました

末尾のアンパサンド(&)はgrunt connect:preview &、サーバーをバックグラウンドプロセスとして開始するものです。

,exec: {
  start_server: {
    command: 'grunt connect:preview &'
  }
}

そして、このようにうなり声のタスクを登録します

grunt.registerTask('preview', ['clean:preview', 'template', 'exec', 'watch' ]);

これを行うにはもっと良い方法が必要ですが、これまでのところ、私が考えることができる最善の方法です。

于 2013-03-17T19:34:26.710 に答える