2015-06-27 11 views

Antwort

1

Ich habe es neulich eingerichtet, also poste ich eine mögliche Lösung.

Unabhängig davon, ob Sie versuchen, verwenden grunt.config oder <%= ... %> Templat, um das Config Objekt dynamisch zu ändern (Daten zwischen den Aufgaben zu teilen), könnte das Problem sein, dass watch, standardmäßig spawns child processes für die ausgelösten Aufgaben, so dass eslint in einem anderen Kontext laufen.

Um dies zu umgehen, einfach verwenden Sie die spawn:false Optionen Flag während der Konfiguration watch.

Grundsätzlich konfigurieren Sie Ihre Aufgaben als solche:

watch: { 
    scripts: { 
    files: ['**/*.js'], 
    tasks: ['eslint'], 
    options: { 
     spawn: false, // !!! 
    }, 
    }, 
}, 
eslint: { 
    target: '<%= changedFiles %>' 
} 

Dann einen Event-Handler, um die Uhr Ereignis zuordnen, Einstellung changedFiles:

grunt.event.on('watch', function(action, filepath){ 
    grunt.config('changedFiles', filepath); 
} 

Sie können auch eslint.target direkt im Ereignishandler ändern , aber wenn ein Attribut die geänderten Dateien enthält, steht es einer beliebigen Anzahl von Aufgaben zur Verfügung, die sie verwenden könnten.