web-dev-qa-db-fra.com

Comment copier plusieurs fichiers et conserver la structure de dossiers avec Gulp?

J'essaie de copier un fichier d'un dossier à un autre en utilisant gulp 

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

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

le code ci-dessus copie one.css & two.css dans le dossier public/assets/css 

et si j'utilise gulp.src('./source/css/*.css'), il copiera tous les fichiers css dans le dossier public/assets/css qui n'est pas ce que je veux 

ma question est de savoir comment sélectionner plusieurs fichiers et conserver la structure du dossier. 

57
NullPoiиteя

Pour ce faire, veuillez spécifier base.

¶ base - Spécifie le dossier relatif au cwd. La valeur par défaut est le début du glob. Ceci est utilisé pour déterminer les noms de fichier lors de l'enregistrement dans .dest()


Dans votre cas ce serait:

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

Structure du dossier:

|-gulpfile.js
|-source
|   |-css
|   |-other
|      |-css
|-public
|   |-assets
111
Anulal S

J'utilise gulp-flatten et utilise cette 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));
}

Et là, vous pouvez voir les documentations sur gulp-flatten: Link.

1
AlejandroJSR7