2015-05-06 12 views
49

sto cercando di copiare il file di da una cartella ad un'altra cartella utilizzando sorsoGulp: Come copiare più file e mantenere la struttura della cartella

gulp.task('move-css',function(){ 
    return gulp.src([ 
    './source/css/one.css', 
    './source/other/css/two.css' 

    ]).pipe(gulp.dest('./public/assets/css/')); 
}); 

sopra il codice sta copiando one.css & two.css-public/assets/css cartella

e se uso gulp.src('./source/css/*.css') copierà tutto il file css nella cartella public/assets/css che non è quella che voglio

la mia domanda è come selezionare ct più file e mantenere la cartella strage?

+0

file CSS @lal possono essere in cartelle diverse espressioni in modo regolare non è utile in questo caso IMHO –

+0

è la questione è come i file in più cartelle vengono copiate in una cartella 'public/assets/css'? –

+0

yupp, esattamente, voglio farlo –

risposta

85

Per ottenere ciò, specificare base.

¶ base - Specificare la cartella relativa al cwd. L'impostazione predefinita è dove inizia il glob. Questo è usato per determinare i nomi di file da salvare in .dest()


Nel tuo caso sarebbe: struttura

gulp.task('move-css',function(){ 
    return gulp.src([ 
     './source/css/one.css', 
     './source/other/css/two.css' 
    ], {base: './source/'}) 
    .pipe(gulp.dest('./public/assets/')); 
}); 

Cartella:

|-gulpfile.js 
|-source 
| |-css 
| |-other 
|  |-css 
|-public 
| |-assets 
+10

Se i tuoi file hanno strutture di directory completamente diverse (ad esempio '['./lib/one.js', './models/two.js']') puoi aggiungere '{ base: '.'} 'per far sì che mantenga tutta la loro struttura. – Tim

+0

Come analizzare ogni file, cartella e sottocartella in src? –

+0

si prega di controllare src con doppio ** 'gulp.src ('**/*. *')' –

1

io uso gulp-appiattire e usare questa configurazione.

var gulp = require('gulp'), 
    gulpFlatten = require('gulp-flatten'); 

var routeSources = { 
    dist: './public/', 
    app: './app/', 
    html_views: { 
    path: 'app/views/**/*.*', 
    dist: 'public/views/' 
    } 
}; 

gulp.task('copy-html-views', task_Copy_html_views); 
function task_Copy_html_views() { 
    return gulp.src([routeSources.html_views.path]) 
     .pipe(gulpFlatten({ includeParents: 1 })) 
     .pipe(gulp.dest(routeSources.html_views.dist)); 
} 

E lì si può vedere la documentazione circa gulp-appiattito: Link.

Problemi correlati