Gruntjsを使用して推進する方法を学んでいます。 サーバータスク が見つかりましたが、ポイントを得ることができません。
連結/縮小されたサーバータスクマッピングファイルを使用して、ソースファイルをWebサーバールートに移動または配置せずにアプリケーションをテストできますか(backbone.jsを使用)?たとえば、Apacheなし。
いいえの場合、サーバータスクの想定される使用は何ですか?
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);
});
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'
}
}
}
});
サーバータスクのポイントは、テストのために静的ファイルにすばやくダーティアクセスすることです。 grunt server IS NOT実稼働サーバー環境。実際にgruntライフサイクル中にのみ使用して、静的テスト資産をテスト環境に送ります。NPMによって制御される可能性がある本格的なサーバーを使用します。実稼働環境用のライフサイクルスクリプト。