web-dev-qa-db-ja.com

gruntjsサーバータスクの目的は何ですか?

Gruntjsを使用して推進する方法を学んでいます。 サーバータスク が見つかりましたが、ポイントを得ることができません。

連結/縮小されたサーバータスクマッピングファイルを使用して、ソースファイルをWebサーバールートに移動または配置せずにアプリケーションをテストできますか(backbone.jsを使用)?たとえば、Apacheなし。

いいえの場合、サーバータスクの想定される使用は何ですか?

61
gremo

serverタスクは、baseパスをWebルートとして設定して静的サーバーを起動するために使用されます。

例:配信./web-root なので http://localhost:8080/

grunt.initConfig({
  server: {
    port: 8080,
    base: './web-root'
  }
});

Apacheサーバーと同様に機能し、パスに基づいて静的ファイルを提供しますが、 httpモジュール via connect を使用してセットアップします( source )。

静的なファイル以上のものを提供する必要がある場合は、 カスタムserverタスクの定義 を検討する必要があります。

grunt.registerTask('server', 'Start a custom web server.', function() {
  grunt.log.writeln('Starting web server on port 1234.');
  require('./server.js').listen(1234);
});

カスタムサーバーインスタンス:

// server.js
var http = require('http');
module.exports = http.createServer(function (req, res) {
    // ...
});

連結/縮小されたファイルをマッピングするサーバータスクを使用して、アプリケーションをテストできますか[...]

連結と縮小には独自の専用タスクがあります- concat および min -しかし、serverすべてを達成するタスク3。


編集

サーバーをしばらく(およびうなり声で)持続させたい場合は、 タスクを非同期として定義 (サーバーの 'close' event ):

grunt.registerTask('server', 'Start a custom web server.', function() {
  var done = this.async();
  grunt.log.writeln('Starting web server on port 1234.');
  require('./server.js').listen(1234).on('close', done);
});
80

serverタスクはconnectタスクになり、 grunt-contrib-connect パッケージに含まれています。

connectタスクは、接続Webサーバーを開始します。

次のコマンドでこのプラグインをインストールします。

npm install grunt-contrib-connect --save-dev

注:--save-devにはdevDependenciesにパッケージが含まれます。 https://npmjs.org/doc/install.html を参照してください

プラグインをインストールしたら、次のJavaScript行を使用してGruntfile内で有効にすることができます。

grunt.loadNpmTasks('grunt-contrib-connect');

grunt connectコマンドでこのタスクを実行します。

このサーバーはgruntが実行されている間のみ実行されることに注意してください。 Gruntのタスクが完了すると、Webサーバーは停止します。この動作は keepalive オプションで変更でき、grunt connect:targetname:keepaliveなどのタスクを実行することでアドホックに有効にできます。 targetnameは、以下のサンプルコードの「サーバー」と同じです。

この例では、grunt connect(またはより詳細には、grunt connect:server)は、http://localhost:9001/で静的Webサーバーを起動し、そのベースパスはGruntfileに関連するwww-rootディレクトリに設定されます。 、その後実行されるタスクはすべてアクセスできます。

// Project configuration.
grunt.initConfig({
  connect: {
    server: {
      options: {
        port: 9001,
        base: 'www-root'
      }
    }
  }
});
53

サーバータスクのポイントは、テストのために静的ファイルにすばやくダーティアクセスすることです。 grunt server IS NOT実稼働サーバー環境。実際にgruntライフサイクル中にのみ使用して、静的テスト資産をテスト環境に送ります。NPMによって制御される可能性がある本格的なサーバーを使用します。実稼働環境用のライフサイクルスクリプト。

8
David Souther