L'enregistrement de Grunt tâches dont le code se trouve dans des fichiers JavaScript externes
J'ai écrit une fonction qui je voudrais utiliser comme un Grognement tâche. Je peux le faire en ajoutant ceci à la Gruntfile:
grunt.registerTask('foo', function () {
//code here
});
Cependant, il est plus judicieux de garder le code de la fonction dans un fichier séparé. J'ai l'intention de définir un tas de ces tâches personnalisées et je ne veux pas encombrer l'Gruntfile.
Je ne suis pas sûr de ce que le moyen préféré de l'inscription de ces tâches. J'ai trouvé que c':
grunt.registerTask('foo', function () {
require('./path/to/foo.js')(grunt);
});
Donc, je vais avoir la fonction inline, comme dans le premier exemple, mais cette fois, je suis le chargement d'un fichier externe et l'invoque immédiatement. Dans ce fichier externe, bien sûr, je dois écrire:
module.exports = function (grunt) {
//code here
}
Cela fonctionne, mais il se sent hackish. Est-il un plus bonne façon de le faire?
OriginalL'auteur | 2013-09-05
Vous devez vous connecter pour publier un commentaire.
Réponse courte: l'alternative à cette
est http://gruntjs.com/api/grunt#grunt.loadtasks
Réponse longue:
Normalement, lorsque vous avez des tâches dans des fichiers externes y sont servis que d'autres modules nodejs. Donc, si c'est quelque chose que vous allez utiliser dans plusieurs projets, vous pouvez l'enregistrer dans le registre. Plus tard à l'intérieur de votre Gruntfile.js vous aurez:
Le grognement de la documentation dit:
Toutefois, si vous ne voulez pas télécharger quoi que ce soit pour le registre, vous devez utiliser loadTasks
Donc, une fois que la tâche est chargé, vous pouvez l'utiliser dans votre configuration.
Ici est un simple grognement tâche placé dans un fichier externe:
Et plus tard dans Gruntfile.js
grunt name
dans la ligne de commande.J'ai juste édité ma réponse.
J'ai essayé ce modèle. Il ne fonctionne pas. Je reçois
Warning: Task "foo" not found.
dans la ligne de commande. J'ai essayé de spécifier le chemin d'accès à la fois l'un des principaux./
, l'un des principaux/
et sans ceux-ci.J'ai pensé à elle. Le
'path to your task'
dans votre code ci-dessus est censé être le chemin d'accès à la directory qui contient les fichiers JS qui représentent les tâches. J'ai créé un "tâches" sous-répertoire, placéfoo.js
, et exécutergrunt.loadTasks('tasks')
dans le Gruntfile. Maintenant, la tâche est correctement chargé et que je peux courirgrunt foo
dans la ligne de commande.Désolé, j'étais hors de la maison pendant un certain temps. Je suis heureux que vous trouverez la réponse.
OriginalL'auteur Krasimir
J'ai eu un problème similaire.
Je voulais modulariser mon grognement de config et des tâches personnalisées en fonctionnalités (big UX/UI blocs) plutôt que par des caractéristiques techniques. ET je voulais garder les fichiers de config suivante pour les fichiers de travail... (mieux lorsque vous travaillez sur un vaste héritage de la base de code avec une varié équipe de 5 personnes avec des JS de connaissances)
Donc j'extériorise mes tâches comme Krasimir fait.
Dans le gruntfile, j'ai écrit :
, Vous trouverez l'ensemble réutilisable gruntfile ici (externe config et les tâches de chargement) : https://gist.github.com/0gust1/7683132
Registering "tasks" tasks. Initializing config...OK Loading "scp.js" tasks...OK >> No tasks were registered or unregistered.
Loading "Gruntfile.js" tasks...ERROR
OriginalL'auteur 0gust1