Yeoman使用谷歌app引擎服务器

bsr*_*bsr 5 javascript gruntjs yeoman

我设置了Yeoman 1.0 beta来处理我的js/css任务.一切正常,如果我运行grunt server,它会启动静态服务器并将浏览器会话连接到端口9000(livereload).js/css concat,minification也在工作.

现在,有没有办法让它连接到谷歌应用程序引擎开发服务器(而不是启动静态服务器).服务器在localhost上的端口8080上运行,我希望grunt在watch下的css/js文件上重新加载网页.这些文件将由GAE服务器提供.

rolling your owngrunt-contrib-connect 文档中看到了一个部分,但不确定它是否意味着外部服务器.据我所知,这些是Gruntfile.js的相关配置

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

当我将端口号更改为8080并尝试启动时,显然它会出错.

致命错误:端口8080已被其他进程使用.

所以,我不想启动新服务器,而是通过已经运行的GAE服务器连接.

谢谢.

Ars*_*ari 7

为了使用GAE服务器而不是nodejs服务器,我们需要执行以下操作.
*编译你的less/coffeescript,concat [,minify],将你的代码复制到app引擎代码所在的位置.
*在grunt.js中创建一个任务,以生成一个shell命令来运行app引擎.

这是我用作参考的例子.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');
};
Run Code Online (Sandbox Code Playgroud)