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?
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.
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);
});
La tâche
server
est maintenant la tâcheconnect
et elle est incluse dans lagrunt-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 votredevDependencies
, 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'
}
}
}
});
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.