5

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

现在,有没有办法让它连接到谷歌应用引擎开发服务器(而不是启动静态服务器)。服务器在 localhost 的 8080 端口上运行,我希望 grunt 在监视下的 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)
            ];
          }
        }
      },

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

致命错误:端口 8080 已被另一个进程使用。

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

谢谢。

4

2 回答 2

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');
};
于 2013-02-22T00:37:52.410 回答
2

为 Grunt找到了这个Google App Engine 管理插件

于 2013-12-05T07:28:00.910 回答