2015-01-22 15 views
5

Ho un collegamento simbolico nella cartella delle mie immagini che punta a un'altra cartella contenente immagini esterne fornite da una libreria di terze parti (gestita da bower - devo love javascript). Come parte del mio processo di compilazione, a comprimere tutte le immagini come segue:Gulp che genera errori sui collegamenti simbolici 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')) 
}); 

Quando sorso arriva alla cartella link simbolico nella cartella img, restituisce

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

Utilizzando gulp-debug mostra che baulks nella cartella dei link simbolici. Sono su Mac OSX e il collegamento simbolico è stato creato usando ln -s. Qualche idea?

+0

Hai provato a utilizzare il file/cartella reale anziché il collegamento simbolico? Giusto per verificare che i collegamenti simbolici siano il problema. L'errore EISDIR mi fa pensare che gulp stia cercando di usare una directory dato che è src invece dei file in quella directory. – donnywals

+0

Funziona bene quando si tratta di una cartella. L'ho usato come soluzione temporanea. – rstuart85

+0

Sto incontrando lo stesso problema che attualmente funziona con collegamenti locali JSPM ... – ryanlutgen

risposta

5

gulp.src() utilizza node-glob, che non strisciare link simbolici:

** Se un "globstar" è solo in una porzione di percorso, allora corrisponde a zero o più directory e sottodirectory alla ricerca di corrispondenze. Non esegue la scansione delle directory con collegamenti simbolici.

noti che collegato simbolicamente directory non vengono scansionati come parte di un **, se i loro contenuti possono corrispondere contro porzioni successive del disegno. Questo impedisce loop infiniti e duplicati e simili.

Non so se si suppone di errore o semplicemente saltarli.

+0

Spero che non commettiate un errore ma eccoci qui. – rstuart85

3

Stavo avendo lo stesso problema quando si punta a una cartella symlink. La soluzione era semplice, basta usare il pacchetto vinyl-fs.

var vfs = require('vinyl-fs'); 

gulp.task('myTask', [], function() { 
    vfs.src('static/img/**/*') 
    .pipe(vfs.dest('dist/img')) 
)}; 
2

È possibile utilizzare l'opzione 'seguito: true' per rendere Gulp seguire i collegamenti simbolici. Ad esempio:

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