2013-02-21 10 views
5

Konfiguruję Yeoman 1.0 beta do obsługi zadań js/css. Wszystko działa dobrze, jeśli uruchomię grunt server, uruchomi on serwer statyczny i połączy sesję przeglądarki z portem 9000 (livereload). js/css concat, minifying działają również.Yeoman, aby użyć serwera wyszukiwarki aplikacji Google

Teraz czy istnieje sposób mogę to zrobić, aby połączyć się z serwerem rozwoju Google App Engine (zamiast uruchamiania serwera statycznego). Serwer działa na porcie 8080 na lokalnym hoście i chcę, aby przeładował stronę na plikach css/js pod kontrolą. Pliki te będą obsługiwane przez serwer GAE.

widzę sekcję rolling your own na grunt-contrib-connectdocumentation, ale na pewno nie oznacza to, że serwer zewnętrzny. O ile widzę, są to relavent konfiguracja z Gruntfile.js

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

Kiedy zmienić numer portu na 8080, a następnie spróbuj uruchomić, oczywiście daje błąd.

Fatal error: Port 8080 is already in use by another process.

, więc nie chcę uruchamiać nowego serwera, ale połączyć się z serwerem GAE, który już działa.

Dzięki.

Odpowiedz

7

Aby używać serwera GAE zamiast serwera nodejs, musimy wykonać następujące czynności.
* Skompiluj mniej/coffeescript, połącz [, minify], skopiuj kod do lokalizacji, w której znajduje się kod aparatu aplikacji.
* Utwórz zadanie w pliku grunt.js, aby utworzyć polecenie powłoki, aby uruchomić silnik aplikacji.

Oto przykład, którego użyłem jako odniesienia. https://github.com/cowboy/grunt/tree/master/tasks

Poniższy plik grunt.js może pomóc!

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'); 
}; 
Powiązane problemy