javascript - tan - Yeoman usará el servidor del motor de la aplicación google
nodebeginner español (2)
Configuro Yeoman 1.0 beta para manejar mis tareas de js / css. Todo funciona bien, si ejecuto el grunt server
, se inicia un servidor estático y se conecta una sesión del navegador al puerto 9000 (livereload). js / css concat, minification también están funcionando.
Ahora, ¿hay alguna manera de hacerlo para conectarme a un servidor de desarrollo de motores de aplicaciones de Google (en lugar de iniciar un servidor estático)? El servidor se está ejecutando en el puerto 8080 en localhost, y quiero que gruñido vuelva a cargar la página web en archivos css / js bajo observación. Estos archivos serían servidos por el servidor GAE.
Veo una sección rolling your own
en la documentación de grudo-contrib-connect , pero no estoy seguro de que signifique un servidor externo. Por lo que veo, esta es la configuración relavent de Gruntfile.js
connect: {
livereload: {
options: {
port: 8080, //*** was 9001 originally **
middleware: function (connect) {
return [
lrSnippet,
mountFolder(connect, ''.tmp''),
mountFolder(connect, yeomanConfig.app)
];
}
}
},
Cuando cambio el número de puerto a 8080, y trato de iniciar, obviamente da error.
Error fatal: el puerto 8080 ya está siendo utilizado por otro proceso.
por lo tanto, no quiero iniciar un nuevo servidor, sino conectarme a través del servidor GAE que ya se está ejecutando.
Gracias.
Para utilizar el servidor GAE en lugar del servidor nodejs, debemos hacer lo siguiente.
* Compile su less / coffeescript, concat [, minify], copie su código en la ubicación donde reside el código del motor de la aplicación.
* Crea una tarea en grunt.js para generar un comando de shell para ejecutar el motor de la aplicación.
Este es el ejemplo, que utilicé como referencia. https://github.com/cowboy/grunt/tree/master/tasks
¡Seguir el archivo grunt.js puede ayudar!
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'');
};