Подтвердить что ты не робот

Как скопировать несколько файлов и сохранить структуру папок с Gulp

Я пытаюсь скопировать файлы из одной папки в другую, используя Gulp:

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 в two.css public/assets/css.

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

Как выбрать несколько файлов и сохранить структуру папок?

4b9b3361

Ответ 1

Для этого, пожалуйста, укажите 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

Ответ 2

Я использую gulp-flatten и использую эту конфигурацию:

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

И там вы можете увидеть документацию о gulp-flatten: Ссылка