【问题标题】:Yeoman to use google app engine serverYeoman 使用谷歌应用引擎服务器
【发布时间】:2013-02-07 11:27:36
【问题描述】:

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

现在,有没有办法让它连接到谷歌应用引擎开发服务器(而不是启动静态服务器)。服务器在 localhost 的 8080 端口上运行,我希望 grunt 在监视下的 css/js 文件上重新加载网页。这些文件将由 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 服务器连接。

谢谢。

【问题讨论】:

    标签: javascript gruntjs yeoman


    【解决方案1】:

    为了使用 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');
    };
    

    【讨论】:

      【解决方案2】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-22
        • 1970-01-01
        • 1970-01-01
        • 2011-01-30
        • 2013-07-05
        • 2011-06-01
        • 1970-01-01
        • 2017-07-14
        相关资源
        最近更新 更多