2016-04-07 18 views
2

Die Verwendung von grunt-watch zur Überwachung von Änderungen an Dateien eignet sich hervorragend zum Hinzufügen/Ändern von Vorgängen, da die Aufgabe files (oder) die Aufgabe enthält, wenn sie die Aufgabe mit der Änderungsliste aufruft. geänderte DateienBeobachten gelöschter Dateien mit grunt

Nicht so bei gelöschten Dateien. Wenn Sie nach gelöschten Dateien suchen und eine Aufgabe aufrufen, wird die gelöschte Datei nicht in der Eigenschaft filesSrc der Aufgabe oder im normalisierten Teil der Eigenschaft files angezeigt.

Neben manuell die orig Eigenschaft eines bestimmten files Element Normalisieren, gibt es eine Möglichkeit, die gelöschte Datei zu zwingen, in fileSrc oder dem normalisierten Teil files erscheint? Wenn nicht, was ist der beste Weg, um orig zu normalisieren (ich will das Rad nicht neu erfinden)?

Antwort

2

Es ist wahrscheinlich das Plugin die gelöschten Dateien aus den Dateien Array von Design Dumping, das Plugin jedoch emittiert ein watchevent, dass Sie kann hören:

grunt.initConfig({ 
    watch: { 
    scripts: { 
     files: ['**'], 
    }, 
    }, 
}); 
grunt.event.on('watch', function(action, filepath, target) { 
    if (target === 'scripts' && action === 'deleted') { 
    // your code goes here 
    } 
}); 

Es Hinsicht ist auch eine Uhr Aufgabe einzurichten spezifisch, die eine bestimmte Aufgabe ausführt, wenn der Beobachter eine Löschung feststellt. Beide Methoden sind in der plugin's documentation aufgeführt.

+0

Ja, ich habe die Technik, die in „Kompilieren Dateien nach Bedarf“ verwendet. Das Problem mit dem "Watch" -Ereignis besteht darin, dass es nur einen globalen "Watch" -Loucher geben kann, und wenn Sie mehrere Watch-Ziele gleichzeitig ausführen, kann man nicht wissen, aus welchem ​​Ziel ein bestimmtes Ereignis kommt. – gzak

+0

Zum Beispiel, wenn Sie ihr Beispiel mit JSLint nehmen, und nehme an, Sie benötigt eine andere Uhr Ziel zu laufen, das wie JSLint etwas viel tat (nennen wir es jslint2), sondern auf einem separaten (aber überlappend) Satz von Dateien, würde die Uhr Zuhörer haben keine Wahl, aber sowohl jslint als auch jslint2 für jede Dateiänderung in der Vereinigung der beiden Mengen laufen zu lassen (sonst könnten einige Dateien in einem der Ziele fehlen). Aber das bedeutet, dass einige Dateien jslint'ed (oder jslint2'ed) werden können, was nicht sein sollte. – gzak

+0

Ihre bedingte Ändern Sie das Ziel zu überprüfen: 'if (Ziel === 'JSLint' && Aktion === 'gelöscht')' – theaccordance