61 votes

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

J'apprends à propulser en utilisant gruntjs. J'ai trouvé le tâche du serveur mais je n'arrive pas à saisir l'essentiel.

Puis-je utiliser la tâche serveur de mappage de fichiers concaténés/minifiés pour tester mon application (utilise backbone.js) sans déplacer ou placer les fichiers sources dans le Root du serveur web ? Sans apache par exemple...

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

80voto

Jonathan Lonowski Points 45253

El server est utilisée pour démarrer un serveur statique avec l'option base comme racine du site web.

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

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

Il fonctionnera de la même manière qu'un serveur Apache, en servant des fichiers statiques en fonction de leur chemin d'accès, mais il utilise l'attribut module http via connecter pour le mettre en place ( source ).

Si vous avez besoin qu'il serve plus que de simples fichiers statiques, vous devez envisager de définir une coutume server tâche :

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 les fichiers concaténés/minifiés du mapping de la tâche serveur pour tester mon application [...].

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


Modifier

Si vous voulez qu'il persiste le serveur pendant un certain temps (ainsi que grunt), vous pourriez définir la tâche comme asynchrone (avec l'adresse du 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);
});

53voto

Giovanni Points 1010

El server est maintenant la connect et il est inclus dans le grunt-contrib-connect paquet.

El connect La tâche démarre un serveur web connecté.

Installez ce plugin avec cette commande :

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

Note : --save-dev inclut le paquet dans votre devDependencies voir https://npmjs.org/doc/install.html

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

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

Exécutez cette tâche avec l'option grunt connect comando.

Notez que ce serveur ne fonctionne que tant que grunt est en marche. 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 de la manière suivante grunt connect:targetname:keepalive . targetname est égal à "s

Dans cet exemple, grunt connect (ou plus verbeusement, grunt connect:server ) va démarrer un serveur web statique à http://localhost:9001/ avec son chemin de base défini sur le www-root relatif au fichier 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'
      }
    }
  }
});

8voto

David Souther Points 4414

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X