Gulp : How to copy multiple files and keep the fol

2019-01-30 13:52发布

问题:

I am trying to copy file's from one folder to another folder using gulp

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

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

above code is copying one.css & two.css to public/assets/css folder

and if i use gulp.src('./source/css/*.css') it will copy all css file to public/assets/css folder which is not i want

my question is how to select multiple files and keep the folder stracture ?

回答1:

To achieve this please specify base.

¶ base - Specify the folder relative to the cwd. Default is where the glob begins. This is used to determine the file names when saving in .dest()


In your case it would be:

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

Folder structure :

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


回答2:

I use gulp-flatten and use this configuration.

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

And there you can see the documentations about gulp-flatten: Link.