2013-02-21 84 views
5

我設置Yeoman 1.0 beta來處理我的js/css任務。一切正常,如果我運行grunt server,它會啓動一個靜態服務器並將瀏覽器會話連接到端口9000(livereload)。 js/css concat,縮小也在工作。現在Yeoman使用谷歌應用程序引擎服務器

是有辦法,我可以把它連接到谷歌應用程序引擎開發服務器(而不是開始一個靜態的服務器)。服務器運行在localhost上的端口8080上,我想讓grunt重新加載監視下的css/js文件時的網頁。這些文件將由GAE服務器提供。

我看到一個部分rolling your own咕嚕-的contrib-連接documentation,但不知道這意味着外部服務器。據我所見,這些都是從Gruntfile.js

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

的relavent配置當我更改端口號爲8080,並嘗試啓動,這顯然給了錯誤。

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

所以,我不想啓動一個新的服務器,但通過GAE服務器連接已經運行。

謝謝。

回答

7

爲了使用GAE服務器而不是nodejs服務器,我們需要執行以下操作。
*編譯您的less/coffeescript,concat [,minify],將您的代碼複製到應用程序引擎代碼所在的位置。
*在grunt.js中創建一個任務以生成一個shell命令來運行應用程序引擎。

這是我用作參考的例子。 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'); 
};