Estoy tratando de copiar archivos de una carpeta a otra usando Gulp:
gulp.task('move-css',function(){ return gulp.src([ './source/css/one.css', './source/other/css/two.css' ]).pipe(gulp.dest('./public/assets/css/')); }); El código anterior está copiando one.css y two.css en la carpeta public/assets/css .
Y si uso gulp.src('./source/css/*.css') copiará todos los archivos CSS a la carpeta public/assets/css que no es lo que quiero.
¿Cómo selecciono varios archivos y mantengo la estructura de carpetas?
Para lograr esto, especifique base .
¶ base - Especifique la carpeta relativa a la cwd. El valor predeterminado es donde comienza el globo. Esto se usa para determinar los nombres de archivo al guardar en
.dest()
En tu caso sería:
gulp.task('move-css',function(){ return gulp.src([ './source/css/one.css', './source/other/css/two.css' ], {base: './source/'}) .pipe(gulp.dest('./public/assets/')); });Estructura de carpetas:
. ├── gulpfile.js ├── source │ ├── css │ └── other │ └── css └── public └── assetsUso gulp-flatten y uso esta configuración:
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)); }Y allí puedes ver la documentación sobre gulp-flatten: Enlace
gulp.task('move-css',function(){ return gulp .src([ 'source/**'], { base: './' }) .pipe(gulp.dest('./public/assets/css/')); }); Su propio código no incluía todo el árbol de directorios de la fuente 'source/**' y la base {base:'./'} al llamar a gulp.src lo que provocó que la función fallara. Las otras partes donde bien.
gulp.task('move-css',function(){ return gulp.src([ './source/css/one.css', './source/other/css/two.css' ]).pipe(gulp.dest('./public/assets/css/')); });