node.js - serve - que es gulp
¿Cuál es el propósito de la tarea del servidor de gruntjs? (3)
Estoy aprendiendo cómo impulsar el uso de gruntjs. Encontré la tarea del servidor pero no entiendo el punto.
¿Puedo usar la tarea del servidor asignando archivos concatenados / minificados para probar mi aplicación (usa backbone.js) sin mover o colocar archivos fuente en la raíz del servidor web? Sin apache por ejemplo.
Si no, ¿cuál es el supuesto uso de la tarea del servidor?
La tarea del
server
ahora es la tarea deconnect
y está incluida en el paquetegrunt-contrib-connect
.
La tarea de connect
inicia un servidor web de conexión.
Instale este complemento con este comando:
npm install grunt-contrib-connect --save-dev
Nota:
--save-dev
incluye el paquete en susdevDependencies
, consulte https://npmjs.org/doc/install.html
Una vez que se ha instalado el complemento, puede habilitarse dentro de Gruntfile con esta línea de JavaScript:
grunt.loadNpmTasks(''grunt-contrib-connect'');
Ejecute esta tarea con el comando grunt connect
.
Tenga en cuenta que este servidor solo se ejecuta mientras se ejecuta roncado. Una vez que las tareas de gruñido se han completado, el servidor web se detiene. Este comportamiento se puede cambiar con la opción keepalive
y se puede habilitar ad-hoc ejecutando la tarea como grunt connect:targetname:keepalive
. targetname
es igual a "servidor" en el siguiente ejemplo de código.
En este ejemplo, grunt connect
(o más ampliamente, grunt connect:server
) iniciará un servidor web estático en http://localhost:9001/
, con su ruta base establecida en el directorio www-root
relativo al Gruntfile, y cualquier las tareas que se ejecuten posteriormente podrán acceder a él.
// Project configuration.
grunt.initConfig({
connect: {
server: {
options: {
port: 9001,
base: ''www-root''
}
}
}
});
El objetivo de la tarea del servidor es tener acceso rápido y sucio a los archivos estáticos para la prueba. El servidor de grunts NO ES un entorno de servidor de producción. Realmente solo debería usarse durante el ciclo de vida del grunt para obtener activos de prueba estáticos para el entorno de prueba. Utilice un servidor completo, posiblemente controlado por las secuencias de comandos del ciclo de vida de NPM, para entornos de producción.
La tarea del server
se utiliza para iniciar un servidor estático con la ruta base
establecida como la raíz web.
Ejemplo: Servir ./web-root
como http://localhost:8080/
:
grunt.initConfig({
server: {
port: 8080,
base: ''./web-root''
}
});
Funcionará de manera similar a un servidor Apache, que sirve archivos estáticos en función de su ruta, pero utiliza el módulo http a través de la conexión para configurarlo ( fuente ).
Si necesita que sirva más que solo archivos estáticos, querrá considerar la definición de una tarea de server
personalizada :
grunt.registerTask(''server'', ''Start a custom web server.'', function() {
grunt.log.writeln(''Starting web server on port 1234.'');
require(''./server.js'').listen(1234);
});
Y instancia de servidor personalizado:
// server.js
var http = require(''http'');
module.exports = http.createServer(function (req, res) {
// ...
});
¿Puedo usar la tarea del servidor asignando archivos concatenados / minificados para probar mi aplicación [...]
La concatenación y la minificación tienen sus propias tareas dedicadas, concat
y min
, pero podrían usarse junto con una tarea de server
para lograr las 3.
Editar
Si desea que persista en el servidor por un tiempo (además de gruñir), podría definir la tarea como asincrónica (con el evento ''close''
del servidor):
grunt.registerTask(''server'', ''Start a custom web server.'', function() {
var done = this.async();
grunt.log.writeln(''Starting web server on port 1234.'');
require(''./server.js'').listen(1234).on(''close'', done);
});