2015-05-06 6 views
49

Я пытаюсь скопировать файл из одной папки в другую папку с помощью глоткаГлоток: Как скопировать несколько файлов и сохранить структуру папок

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

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

выше кода копирует one.css & two.css в public/assets/css папке

и если я использую gulp.src('./source/css/*.css'), он скопирует весь файл css в папку public/assets/css, которая не я хочу.

мой вопрос в том, как selec t нескольких файлов и сохранить разрыв папок?

+0

@lal CSS файлы могут быть в разных папках, поэтому регулярное выражение не является полезным в этом случае ИМХО –

+0

является вопрос, как файлы в несколько папок копируются в одну папку 'public/assets/css'? –

+0

yupp, точно, я хочу сделать это –

ответ

85

Для этого необходимо указать base.

¶ base - Укажите папку относительно cwd. По умолчанию начинается глобус. Это используется, чтобы определить имена файлов при сохранении в .dest()


В вашем случае это будет: структура

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

Папка:

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

Если ваши файлы имеют совершенно разные структуры каталогов (например, '['./lib/one.js', './models/two.js']'), вы можете добавить '{ base: '.'} ', чтобы сохранить свою структуру. – Tim

+0

Как анализировать все файлы, папки и подпапки в src? –

+0

, пожалуйста, проверьте src с двойным ** 'gulp.src ('**/*. *')' –

1

Я использую Глоток-расплющить и используйте эту конфигурацию.

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)); 
} 

И там вы можете увидеть документацию о Глоток-Flatten: Link.