Grunt montre ne fonctionne pas
J'ai essayé d'exécuter la montre tâche par grunt dans node.js mais il ne fonctionne pas pour moi (c'est ce que j'ai obtenu):
$ grunt watch
warning: Maximum call stack size exceeded Use --force to continue.
C'est la partie de la montre tâche dans le Gruntfile.js:
watch: {
less: {
files: 'src/less/*.less',
tasks: ['clean', 'recess', 'copy']
},
js: {
files: 'src/js/*.js',
tasks: ['clean', 'jshint', 'concat', 'uglify', 'copy']
},
theme: {
files: 'src/theme/**',
tasks: ['clean', 'recess', 'copy']
},
images: {
files: 'src/images/*',
tasks: ['clean', 'recess', 'copy']
}
}
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('watch', ['watch']);
source d'informationauteur elkebirmed
Vous devez vous connecter pour publier un commentaire.
u_mulder est correct; il suffit de supprimer l'inutile
grunt.registerTask('watch', ['watch'])
ligne à partir de votre code et vous devriez être bon d'aller.Edit: Cela se produit parce que vous vous inscrivez à une nouvelle tâche qui s'appelle elle-même. Ajoutant une ligne comme
grunt.registerTask('watch', ['watch']);
n'a pas de sens car elle est déjà définie pour vous. Si ce n'était pas le cas, vous devez appelergrunt.registerTask
pour chaque tâche dans votre Gruntfile config.Dans certains cas, il pourrait être judicieux de faire un alias de la tâche avec un nom différent. Il serait appelé avec exactement la même configuration que vous avez spécifié, mais l'aliasing, il pourrait enregistrer la saisie. Par exemple, je voudrais inscrire mon tâches disponibles plugin avec des "tâches" alias, donc au lieu de taper
grunt availabletasks
je peux tapergrunt tasks
et qui me permet de gagner un peu de temps. Dans ce cas, vous pourriez faire quelque chose comme:Et vous pouvez alors utiliser
grunt w
comme un raccourci pourgrunt watch
.En fait, la suppression de
grunt.registerTask('watch', ['watch'])
va vous arranger.Mais laissez-moi vous aider à comprendre ce qui se passe sous le capot.
Avec
grunt.registerTask('watch', ['watch'])
watch
est d'appeler lui-même, ce qui génère une boucle infinie.Lorsque vous le supprimez, il fonctionne toujours, cause
watch
est la tâche par défaut de l'emballage, qui, j'imagine, est appelé au tout début de votre fichier avecgrunt.loadNpmTasks('grunt-contrib-watch');
. Vous pouvez aller plus loin sur la doc iciCependant, il serait vraiment pratique pour obtenir votre personnalisation de la montre tâche de travailler comme vous le souhaitez. Pour ce faire, il serait probablement mieux de faire quelque chose comme
grunt.registerTask('watchfiles', ['watch'])
. Avec cela, vous éviter la boucle infinie et faire de votre personnalisation de travail.Et que vous exécutez la tâche de cette
$ grunt watchfiles
et il serait bien performer.Noter que tous les chemins d'accès doivent être les plus appropriés, sinon, si une tâche a un mauvais chemin d'accès spécifié, il sera tout simplement pas courir.