Як скопіювати кілька файлів і зберегти структуру папок за допомогою Gulp


77

Я намагаюся скопіювати файли з однієї папки в іншу за допомогою 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до public/assets/cssпапці.

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

Як вибрати кілька файлів і зберегти структуру папок?


Файли css @lal можуть знаходитися в різних папках, тому регулярний вираз у цьому випадку не корисний IMHO
NullPoiиteя

проблема полягає в тому, що файли в декількох папках копіюються в одну папку public/assets/css?
Anulal S

yupp, точно, я хочу це зробити
NullPoiиteя

Відповіді:


140

Для досягнення цього, будь ласка, вкажіть 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

20
Якщо ваші файли мають абсолютно різні структури каталогів (наприклад ['./lib/one.js', './models/two.js']), ви можете додати, {base: '.'}щоб зберегти всю їх структуру.
Тім

Як проаналізувати всі файли, папки та підпапки в src?
Правління. 85

1
будь ласка, перевірте src з подвійним **gulp.src('**/*.*')
Anulal S

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

І там ви можете побачити документацію щодо gulp-flatten: Link


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

Ваш власний код не містив усього дерева директорій джерела 'source/**'та основи, {base:'./'}при виклику до gulp.srcякої функція виходила з ладу. В інших частинах де добре.

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

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

ТА хмуриться лише щодо коду Відповіді. На довгострокову цінність - допомогти майбутнім відвідувачам вивчити та застосувати ці знання до власних проблем, а також для збільшення шансів підтримати голоси, розгляньте можливість додавання пояснень та виділення відповідей домашніх тварин, які стосуються проблеми ОП, до своїх відповідей.
SherylHohman
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.