2013-02-21 25 views
5

Tôi thiết lập Yeoman 1.0 beta để xử lý các tác vụ js/css của mình. Mọi thứ hoạt động tốt, nếu tôi chạy grunt server, nó khởi động một máy chủ tĩnh và kết nối phiên trình duyệt với cổng 9000 (tải gan). js/css concat, minification cũng đang hoạt động.Yeoman để sử dụng máy chủ công cụ ứng dụng google

Hiện tại, là có cách tôi có thể kết nối với máy chủ phát triển công cụ ứng dụng google (thay vì bắt đầu máy chủ tĩnh). Máy chủ đang chạy ở cổng 8080 trên máy chủ cục bộ và tôi muốn tải lại trang web khi tệp css/js đang được xem. Các tệp này sẽ được máy chủ GAE phân phối.

Tôi thấy một phần rolling your own tại grunt-contrib-connectdocumentation, nhưng không chắc chắn nó có nghĩa là máy chủ bên ngoài. Theo tôi thấy, đây là cấu hình relavent từ Gruntfile.js

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

Khi tôi thay đổi số cổng thành 8080 và cố gắng bắt đầu, rõ ràng là lỗi này gây ra lỗi.

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

vì vậy, tôi không muốn bắt đầu một máy chủ mới, nhưng kết nối thông qua máy chủ GAE đã chạy.

Cảm ơn.

Trả lời

7

Để sử dụng máy chủ GAE thay vì máy chủ nodejs, chúng tôi cần thực hiện các thao tác sau.
* Biên dịch ít/coffeescript của bạn, concat [, minify], sao chép mã của bạn đến vị trí nơi mã công cụ ứng dụng cư trú.
* Tạo một tác vụ trong grunt.js để sinh ra lệnh shell để chạy công cụ ứng dụng.

Đây là ví dụ mà tôi đã sử dụng làm tài liệu tham khảo. https://github.com/cowboy/grunt/tree/master/tasks

Làm theo tệp grunt.js có thể hữu ích!

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'); 
}; 
Các vấn đề liên quan