2016-07-29 31 views
1

Ich habe ein Problem mit grunt. Ich habe die uglify Aufgabe wie folgt konfiguriert:Grunt schlägt fehl, weil ".js" im Ordnernamen der Quelle enthalten ist

uglify: { 
    my_targets: { 
     files: [{ 
      expand: true, 
      cwd: 'build/dev/Assets/JavaScript', 
      src: '**/*.js', 
      dest: 'build/dist/Assets/JavaScript' 
     }] 
    } 
} 

Im Grunde ist dies perfekt funktioniert ... bis er diesen Ordner: Verkäufer/conditioner.js/ conditioner.js

Grunt denkt, dass Verkäufer/conditioner.js ist eine Datei (weil es mein src Muster übereinstimmt) und versucht, die Datei zu laden, die natürlich in diesem Fehler endet:

{ [Error: Unable to read "build/dev/Assets/JavaScript/vendor/conditioner.js" file (Error code: EISDIR).] 
    origError: { [Error: EISDIR: illegal operation on a directory, read] errno: -4068, code: 'EISDIR', syscall: 'read' } } 

I habe keine Ahnung, wie man grunt sagt, den Ordner zu ignorieren (der mit ".js" endet) und hoffe, dass du helfen kannst. Danke im Voraus.

uglify: { 
    my_targets: { 
     files: [{ 
      expand: true, 
      cwd: 'build/dev/Assets/JavaScript', 
      src: '**/*.js', 
      dest: 'build/dist/Assets/JavaScript', 
      filter: function(filepath) { 
       return filepath.indexOf('conditioner.js') > -1 ? false : true; 
      } 
     }] 
    } 
} 

Antwort

2

Es gibt keine Notwendigkeit, einen benutzerdefinierten Filter zu schreiben:

+0

Vielen Dank! Eigentlich war ich auf dieser Seite, aber aus irgendeinem Grund habe ich die Filteroption verpasst. – Armin

0

könnten Sie ein custom filter function verwenden. In der documentation für das Dateiobjekt wird angegeben, dass ein Filter eine "gültige fs.Stats method name" sein kann. Die Methode isFile existiert bereits. Wir müssen nur den Namen dieses Filters in unserem Dateiobjekt festlegen:

files: [{ 
    expand: true, 
    cwd: 'build/dev/Assets/JavaScript', 
    src: '**/*.js', 
    dest: 'build/dist/Assets/JavaScript', 
    filter: 'isFile' 
}]