2015-01-22 6 views
5

Ich habe einen Symlink in meinen Bildern Ordnern, in einem anderen Ordner verweist enthält externe Bilder von einem Dritten Bibliothek zur Verfügung gestellt (von Bower verwaltet - Gotta Javascript lieben). Im Rahmen meiner Build-Prozess, komprimieren ich alle Bilder wie folgt:Gulp geben Fehler auf Symlinks in gulp.src()

gulp.task('images', function() { 
return gulp.src('static/img/**/*') 
    .pipe(imagemin({ optimizationLevel: 3, progressive: true, interlaced: true })) 
    .pipe(gulp.dest('dist/img')) 
}); 

Wenn Schluck auf den symbolischen Link-Ordner im img Ordner bekommt, gibt es

events.js:72 
    throw er; // Unhandled 'error' event 
     ^
Error: EISDIR, read 

Mit schluck-debug, dass es zeigt, baulks auf dem Symlink-Ordner. Ich bin auf Mac OSX und der Symlink wurde mit ln -s erstellt. Irgendwelche Ideen?

+0

Haben Sie versucht, die tatsächliche Datei/den Ordner anstelle des Symlinks zu verwenden? Nur um zu überprüfen, ob die Symlinks das Problem lösen. Der EISDIR Fehler lässt mich denken, dass Schluck versucht, ein Verzeichnis zu verwenden, wie es src anstelle der Dateien in diesem Verzeichnis ist. – donnywals

+0

Funktioniert gut, wenn es ein Ordner ist. Ich habe das als vorübergehende Lösung benutzt. – rstuart85

+0

ich die Begegnung mit dem gleichen Problem arbeiten derzeit mit JSPM lokalen Links ... – ryanlutgen

Antwort

5

gulp.src() verwendet node-glob, die nicht Symlinks crawlt:

** Wenn ein „globstar“ allein in einem Wegabschnitt ist, dann passt es keine oder mehrere Verzeichnisse und Unterverzeichnisse für die Spiele zu suchen. Es werden keine symbolischen Verzeichnisse gecrawlt.

Beachten Sie, dass Verzeichnisse Symlink nicht als Teil eines ** gekrochen, obwohl ihr Inhalt gegen nachfolgende Teile des Musters entsprechen kann. Dies verhindert unendliche Schleifen und Duplikate und dergleichen.

Ich weiß nicht, ob es ein Fehler ist oder einfach überspringt.

+0

Sie würden hoffen, nicht einen Fehler aus, aber hier sind wir. – rstuart85

3

Ich hatte das gleiche Problem, wenn zu einem symlink Ordner zeigt. Die Lösung war einfach, nur vinyl-fs Paket verwendet.

2

Sie können die Option 'follow: true' verwenden, damit Gulp Symlinks folgt. Zum Beispiel:

gulp.src('static/img/**/*', { follow: true })