62

私はgruntjsの使用を推進する方法を学んでいます。サーバータスクを見つけましたが、要点がわかりません。

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

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

4

3 に答える 3

81

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

例:次./web-rootのように機能しhttp://localhost:8080/ます:

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

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

静的ファイル以外のものを提供する必要がある場合は、カスタムタスクの定義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および)がありますが、3つすべてを実行するタスクとmin一緒に使用できます。server


編集

サーバーをしばらく(およびうなり声を上げて)永続化する場合は、タスクを非同期として定義できます(サーバーの'close'イベントを使用)。

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);
});
于 2012-08-13T23:46:58.817 に答える
54

これserverでタスクがタスクになり、パッケージconnectに含まれます。grunt-contrib-connect

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

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

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

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

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

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

コマンドを使用してこのタスクを実行しますgrunt connect

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

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

// Project configuration.
grunt.initConfig({
  connect: {
    server: {
      options: {
        port: 9001,
        base: 'www-root'
      }
    }
  }
});
于 2013-08-08T07:23:04.560 に答える
8

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

于 2012-12-27T02:38:25.517 に答える