5

js/css タスクを処理するためにYeoman 1.0 ベータ版をセットアップしました。を実行するgrunt serverと、静的サーバーが起動し、ブラウザー セッションがポート 9000 (livereload) に接続されます。js/css concat、縮小化も機能しています。

さて、(静的サーバーを起動する代わりに)Google App Engine開発サーバーに接続する方法はありますか?サーバーは localhost のポート 8080 で実行されており、監視下の css/js ファイルで grunt に Web ページをリロードさせたいと考えています。これらのファイルは、GAE サーバーによって提供されます。

grunt-contrib-connect documentationにセクションrolling your ownがありますが、それが外部サーバーを意味するかどうかはわかりません。私が見る限り、これらは Gruntfile.js からの関連する構成です

connect: {
      livereload: {
        options: {
          port: 8080, //*** was 9001 originally ** 
          middleware: function (connect) {
            return [
              lrSnippet,
              mountFolder(connect, '.tmp'),
              mountFolder(connect, yeomanConfig.app)
            ];
          }
        }
      },

ポート番号を 8080 に変更して起動しようとすると、明らかにエラーが発生します。

致命的なエラー: ポート 8080 は既に別のプロセスで使用されています。

そのため、新しいサーバーを起動したくありませんが、既に実行されている GAE サーバーを介して接続します。

ありがとう。

4

2 に答える 2

7

nodejs サーバーの代わりに GAE サーバーを使用するには、次のことを行う必要があります。
* less/coffeescript、concat[、minify] をコンパイルし、アプリ エンジン コードが存在する場所にコードをコピーします。
* grunt.js でタスクを作成して、アプリ エンジンを実行するためのシェル コマンドを生成します。

これは私が参考にした例です。https://github.com/cowboy/grunt/tree/master/tasks

次の grunt.js ファイルが役立つ場合があります。

module.exports = function(grunt) {
    grunt.initConfig({
    ....
    });

    grunt.registerTask('appengine-update', 'Upload to App Engine.', function() {
        var spawn = require('child_process').spawn;
        var PIPE = {stdio: 'inherit'};
        var done = this.async();

        spawn('appcfg.py', ['update', 'build/task-manager-angular'], PIPE).on('exit', function(status) {
            done(status === 0);
        });
   });
   grunt.registerTask('clean', 'Clean the whole build directory.', function() {
        require('child_process').exec('rm -rdf build', this.async());
   });

   grunt.registerTask('run', 'Run app server.', function() {
       var spawn = require('child_process').spawn;
       var PIPE = {stdio: 'inherit'};
       var done = this.async();
       spawn('dev_appserver.py', ['.'], PIPE).on('exit', function(status) {
          done(status === 0);
       });
    });
});

//....
//Other settings
//....

grunt.loadTasks('tasks');
grunt.loadNpmTasks('grunt-coffeelint');
grunt.registerTask('build', 'coffee less concat');
grunt.registerTask('deploy', 'coffee less concat build appengine-update');
grunt.registerTask('default', 'coffee less');
};
于 2013-02-22T00:37:52.410 に答える