J'avais le même problème et je l'ai finalement compris. La solution est cachée profondément dans la documentation et très trompeuse avec le spawn
Option dans l'échantillon de code: https://github.com/gruntjs/grunt-contrib-watch#compiling-iles-as-seeded
Votre fichier de configuration doit rester le même que vous l'avez dans votre question, mais vous devez ajouter un auditeur à l'événement Watch. Je recommande l'option «robuste» qu'ils fournissent (modifiée pour votre configuration de tâche spécifique). Placez ce code juste au-dessus de l'appel à grunt.initConfig
Et après toi require
appels.
var changedFiles = Object.create(null);
var onChange = grunt.util._.debounce(function() {
// Modified to point to jshint.files as per the task example in the question.
grunt.config('jshint.files', Object.keys(changedFiles));
changedFiles = Object.create(null);
}, 200);
grunt.event.on('watch', function(action, filepath) {
changedFiles[filepath] = action;
onChange();
});
Ajouter le nospawn
option au all
regarder la tâche. C'est ce qui est trompeur dans la documentation. Il mentionne qu'il doit être désactivé si vous souhaitez modifier dynamiquement votre configuration, mais l'empêche essentiellement de travailler avec plus récemment à moins qu'il ne soit défini sur true
:
watch: {
all: {
files: ['<%= jshint.files %>'],
tasks: ['newer:jshint'],
options: {
nospawn: true,
}
},
...
Remarque: Si vous modifiez votre fichier grogn pendant qu'il s'exécute, il mettra à peluchez tous les fichiers, je ne sais pas pourquoi cela fait cela, mais il est ensuite coincé et continuera de tout lier pour toutes les modifications que vous apportez. Je viens de retirer le «gruntfile.js» de la liste des fichiers qui devraient être minces pour l'éviter.