2014-10-19 17 views
21

Ho provato a creare un gulpfile.js per il mio progetto di sito web personale. Non l'ho mai fatto prima ma con un po 'di tentativi ed errori ora funziona in modo accettabile.Gulp non copia tutti i file come previsto

L'unica cosa che non funziona anche dopo 1000 modifiche è la semplice copia di file e cartelle.

var files = { 
    data_src : [ 
    './files.json', 
    'data/**/*.*' 
    ], 
    distribution_dest : '_distribution' 
}; 

gulp.task('copy-data', function() { 
    gulp.src(files.data_src, { base: './' }) 
    .pipe(gulp.dest(files.distribution_dest)) 
    .pipe(notify({message: 'Data copied for distribution!'})); 
}); 

Questo dovrebbe copiare tutte le sottocartelle ei file al gulp.dest. Ma ne copia solo la metà, alcune cartelle verranno ignorate anche se cambio il loro nome ecc. (Nessun carattere speciale, stessa struttura della sottocartella di quella che è stata copiata correttamente ...) - niente ha funzionato. Non riesco a vedere alcun modello in questo.

Nessun messaggio di errore durante l'esecuzione di Gulp. Niente che possa aiutarmi a trovare l'errore.

Perché alcune cartelle o file sono esclusi dalla copia?


Io uso base per mantenere il/struttura delle cartelle sottocartella; provato con e senza 'base' -> nessun effetto sul processo di copia.

Ho anche modificato la posizione dell'attività "copia-dati" nell'elenco di esecuzione. In realtà è il primo compito da eseguire. Non sembra esserci alcun cambiamento nel comportamento, non importa se è il primo o l'ultimo.

gulp.task('default', function() { 
    gulp.run('copy-data', 'custom-sass', 'framework-sass', 'custom-js', 'framework-js', 'replace-tags', 'browser-sync'); 
    ... some watches ... 
}); 

La struttura della cartella dei dati si presenta come questi:

./data 
    |-doc 
    |---content 
    |---template 
    |-img 
    |---chart 
    |---icon 
    |---logo 
    |---pattern 
    |---people 
    |---photo 
    |---symbol 
    |-----brandklassen 
    |-----brandschutzzeichen 
    |-----gebotszeichen 
    |-----gefahrensymbole 
    |-----rettungszeichen 
    |-----verbotszeichen 
    |-----verkehrsrechtzeichen 
    |-----warnzeichen 
    |---wallpaper 

/data/doc e tutte le sottocartelle sono ok.
/data/img/chart a /data/img/people sono anche ok.

All'interno di /data/img/photo vengono copiate solo 14 delle 21 immagini.
/data/img/symbol con sottocartelle e /data/img/wallpaper sono stati ignorati completamente.

+1

se 'base' è la radice, non è necessario che questa opzione sia necessaria. Potrebbe essere che uno dei tuoi schemi di selezione non sia corretto. Puoi darci un'idea della struttura delle cartelle? –

+0

Esegui qualsiasi altra attività prima del task 'copia-dati'? – Heikki

+0

Incontrato lo stesso problema. Questo ha aiutato, grazie. – timetowonder

risposta

23

RISOLTO ESSO! Il problema è stato causato da operazioni operative asincrone. Aggiunta di un gulp forzato return per completare il processo di copia prima di continuare!

gulp.task('copy-data', function() { 
    return gulp.src(files.data_src, { base: './' }) 
    .pipe(gulp.dest(files.distribution_dest)) 
    .pipe(notify({message: 'Data copied for distribution!'})) 
}); 

Ora tutte le immagini vengono copiati!

+0

Ottimo! Grazie è davvero utile – user2518430

Problemi correlati