web-dev-qa-db-fra.com

Quel est le but de la tâche serveur gruntjs?

J'apprends à propulser l'utilisation de gruntjs. J'ai trouvé le tâche serveur mais je ne peux pas comprendre le point.

Puis-je utiliser le mappage des tâches serveur des fichiers concaténés/minifiés pour tester mon application (utilise backbone.js) sans déplacer ou placer les fichiers source à la racine du serveur Web? Sans Apache par exemple.

Si non, quelle est l'utilisation supposée de la tâche serveur?

61
gremo

La tâche server est utilisée pour démarrer un serveur statique avec le chemin base défini comme racine Web.

Exemple: servir ./web-root comme http://localhost:8080/:

grunt.initConfig({
  server: {
    port: 8080,
    base: './web-root'
  }
});

Il fonctionnera comme un serveur Apache, servant des fichiers statiques en fonction de leur chemin, mais utilise le module http via connect pour le configurer ( source ).

Si vous en avez besoin pour servir plus que des fichiers statiques, alors vous voudrez considérer définir une tâche server personnalisée :

grunt.registerTask('server', 'Start a custom web server.', function() {
  grunt.log.writeln('Starting web server on port 1234.');
  require('./server.js').listen(1234);
});

Et une instance de serveur personnalisée:

// server.js
var http = require('http');
module.exports = http.createServer(function (req, res) {
    // ...
});

Puis-je utiliser le mappage des tâches serveur des fichiers concaténés/minifiés pour tester mon application [...]

La concaténation et la minification ont leurs propres tâches dédiées - concat et min - mais peuvent être utilisées avec un server tâche pour accomplir tout 3.


Modifier

Si vous voulez qu'il persiste le serveur pendant un certain temps (ainsi que grognement), vous pouvez définir la tâche comme asynchrone (avec le serveur _ ['close' événement ):

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);
});
80
Jonathan Lonowski

La tâche server est maintenant la tâche connect et elle est incluse dans la grunt-contrib-connect package.

La tâche connect démarre un serveur Web de connexion.

Installez ce plugin avec cette commande:

npm install grunt-contrib-connect --save-dev

Remarque: --save-dev inclut le package dans votre devDependencies, voir https://npmjs.org/doc/install.html

Une fois le plugin installé, il peut être activé dans votre Gruntfile avec cette ligne de JavaScript:

grunt.loadNpmTasks('grunt-contrib-connect');

Exécutez cette tâche avec le grunt connect commande.

Notez que ce serveur ne fonctionne que tant que grunt est en cours d'exécution. Une fois les tâches de grunt terminées, le serveur Web s'arrête. Ce comportement peut être modifié avec l'option keepalive et peut être activé ad-hoc en exécutant la tâche comme grunt connect:targetname:keepalive. targetname est égal à "serveur" dans l'exemple de code ci-dessous.

Dans cet exemple, grunt connect (ou plus verbalement, grunt connect:server) démarrera un serveur Web statique à http://localhost:9001/, avec son chemin de base défini sur www-root répertoire relatif au Gruntfile, et toutes les tâches exécutées par la suite pourront y accéder.

// Project configuration.
grunt.initConfig({
  connect: {
    server: {
      options: {
        port: 9001,
        base: 'www-root'
      }
    }
  }
});
53

Le but de la tâche serveur est d'avoir un accès rapide et sale aux fichiers statiques pour les tests. serveur grunt IS PAS un environnement de serveur de production. Il ne doit vraiment être utilisé que pendant le cycle de vie de grunt pour obtenir des actifs de test statiques dans l'environnement de test. Utilisez un serveur à part entière, éventuellement contrôlé par le NPM scripts de cycle de vie, pour les environnements de production.

8
David Souther