2013-02-21 11 views
5

मैं अपने जेएस/सीएसएस कार्यों को संभालने के लिए Yeoman 1.0 beta सेटअप करता हूं। सब कुछ ठीक काम करता है, अगर मैं grunt server चलाता हूं, तो यह एक स्थिर सर्वर शुरू करता है और ब्राउज़र सत्र को पोर्ट 9000 (लाइवरेलोड) से जोड़ता है। जेएस/सीएसएस concat, minification भी काम कर रहे हैं।यूजर ऐप इंजन इंजन का उपयोग करने के लिए

अब, वहाँ एक रास्ता (के बजाय एक स्थिर सर्वर शुरू) मैं इसे एक Google अनुप्रयोग इंजन विकास सर्वर से कनेक्ट करने के कर सकते हैं। सर्वर स्थानीयहोस्ट पर पोर्ट 8080 पर चल रहा है, और मैं सीएसएस/जेएस फाइलों पर वेबपृष्ठ को फिर से लोड करना चाहता हूं। इन फ़ाइलों को जीएई सर्वर द्वारा परोसा जाएगा।

मैं पर एक वर्ग rolling your own देख घुरघुराना-योगदान कनेक्टdocumentation, लेकिन यकीन नहीं यह किसी बाहरी सर्वर का मतलब है। जहां तक ​​मैं देख रहा हूँ, इन Gruntfile.js

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

से प्रासंगिक विन्यास जब मैं 8080 के लिए पोर्ट नंबर बदलने के लिए, और शुरू करने की कोशिश कर रहे हैं, जाहिर है यह त्रुटि देता है।

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

इसलिए, मैं एक नया सर्वर शुरू नहीं करना चाहता, लेकिन पहले से चल रहे जीएई सर्वर से कनेक्ट हो सकता हूं।

धन्यवाद।

उत्तर

7

नोडजेस सर्वर के बजाय GAE सर्वर का उपयोग करने के लिए, हमें निम्न कार्य करने की आवश्यकता है।
* अपनी कम/कॉफ़ीस्क्रिप्ट संकलित करें, संक्षिप्त [, minify], अपने कोड को उस स्थान पर कॉपी करें जहां ऐप इंजन कोड रहता है।
* ऐप इंजन चलाने के लिए शेल कमांड को स्पैन करने के लिए grunt.js में कोई कार्य बनाएं।

यह उदाहरण है, जिसे मैंने संदर्भ के रूप में उपयोग किया था। 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'); 
};