13
module.exports = function(grunt) {

  // Project configuration.
    grunt.initConfig({
      server: {
        port: 8888,
        base: '.'
      }
    });

};

C:\Program Files\nodejs\test\grunt>
C:\Program Files\nodejs\test\grunt>grunt server
Running "server" task
Starting static web server on port 8888.

エラーなしで完了。

しかし、入力で接続することはできません[http://127.0.0.1:8888][1] in browsers ! jiong~

Windows または UNIX でこの問題を解決するにはどうすればよいですか?

4

4 に答える 4

26

grunt 0.4 とgrunt-contrib-connectを組み合わせると、keepalive引数:を使用して長時間稼働するサーバーを実行するgrunt connect:target:keepaliveか、設定でオプションとして定義できます:

grunt.initConfig({
  connect: {
        target:{
            options: {
                port: 9001,
                keepalive: true
            }
        }
    }
});
于 2012-12-03T03:26:29.797 に答える
5

プロジェクトを提供するために grunt を使用しないでください。Grunt はビルドツールです。代わりに、npm ライフサイクル スクリプトを使用してください。

server.js

var express = require("express"),
    app = express();
app.use('/', express.static(__dirname));
app.listen(8888);

package.json

{
    "name": "my-project",
    "scripts": {
        "start": "node server.js"
    },
    "dependencies": {
        "express": "3"
    }
}

今、あなたは走ることができnpm start、人生は素晴らしいものになるでしょう。Grunt はビルド ツールであり、サーバーではありません。npm はパッケージ ライフサイクル マネージャーであり、ビルド ツールではありません。Express はサーバー ライブラリです。それぞれを適切な場所で使用してください。

フォローアップ (2013-08-15)

このルールの例外は、ビルド スタック内の他のテスト ツールにプロジェクトを提供する必要がある場合です。プラグインは、grunt-contrib-connectこのユースケースを念頭に置いて特別に設計されており、keepalive静的ファイルを提供している間、grunt を開いたままにする構成設定があります。watchこれは通常、テストまたはコードが変更されたときにテスト スイートを実行するタスクと組み合わせて使用​​されます。

于 2012-12-27T02:30:31.217 に答える
4

serverタスクは必要な間だけ実行されますが、終了しないようにすることができます。別の質問に関するウィジェットによるコメントから: ファイルで、タスクとを実行するという名前のタスクを定義します。grunt.jsrunserverwatch

grunt.registerTask("run", "server watch");

タスクは無期限に実行されるため、タスクが終了watchするのを防ぎserverます。watchタスク用の構成も持っていることを確認してください。grunt.jsここでは、すべてがファイルにまとめられています。

module.exports = function (grunt) {
  // …
  grunt.initConfig({
    // …
    watch: {
      files: "<config:lint.files>",
      tasks: "lint qunit",
    },
    // …
  });

  grunt.registerTask("run", "server watch");
};

コマンドラインから次のように入力します。

$ grunt run

サーバーは稼働し続けます。

または、@NateBarr が指摘するように、コマンドラインから次を実行できます。

$ grunt server watch
于 2012-11-25T01:51:06.513 に答える
0

デフォルトでは、Grunt はテストのためだけにサーバーを起動し (またはその他のタスクが要求されます..)、完了するとすぐに終了します....

しかし幸いなことに、これをファイルに追加することgrunt.jsで、(オプションで) サーバーの終了を停止できる解決策を見つけました。

grunt.registerTask('wait', 'Wait for a set amount of time.', function(delay) {
   var d = delay ? delay + ' second' + (delay === '1' ? '' : 's') : 'forever';
   grunt.log.write('Waiting ' + d + '...');
   // Make this task asynchronous. Grunt will not continue processing
   // subsequent tasks until done() is called.
   var done = this.async();
  // If a delay was specified, call done() after that many seconds.
   if (delay) { setTimeout(done, delay * 1000); }
});

次に、コマンドラインで呼び出しますgrunt server wait。ブラウザで表示できるはずです..

必ず中に追加してくださいmodule.exports = function(grunt){...}

于 2012-11-19T15:59:22.127 に答える