web-dev-qa-db-fra.com

Gulp.js - Utilisez le chemin de gulp.src () dans gulp.dest ()

Essayer de créer une tâche gulp qui dirigera un tas de fichiers de différents dossiers via MOINS, puis les exportera vers un dossier basé sur la source d'origine. Considérez cette structure de dossiers:

Project
+-- /Module_A
|   +- /less
|   |  +- a.less
|   +- a.css
|
+-- /Module_B
    +- /less
    |  +- b.less
    +- b.css

Voici mon gulpfile:

var gulp = require('gulp');
var gutil = require('gulp-util');
var less = require('gulp-less');

gulp.task('compileLess', function () {
  gulp.src('./*/less/*.less')
    .pipe(less())
    .pipe(gulp.dest( ??? ));
});

gulp.task('default', ['compileLess']);

Je sais que gulp.dest () s'attend à ce qu'un chemin soit transmis mais dans mon exemple, le chemin sera différent en fonction du fichier source. Alors, comment puis-je récupérer le chemin depuis la source, le modifier puis le passer dans gulp.dest ()?

Ou est-ce que je m'y trompe?

54
Adam

Vous devriez jeter un œil à gulp-rename

Plutôt:

gulp.src('./*/less/*.less')
  .pipe(less())
  .pipe(rename(function(path){
    // Do something / modify the path here         
  }))
  .pipe(gulp.dest('./finalRootDestination'))

Vous laissez gulp.dest pointant vers votre répertoire de sortie final, mais modifiez à la volée les chemins de fichiers individuels en fonction de la logique que vous souhaitez à l'intérieur du rappel pour gulp-rename.

29
Mangled Deutz

dans votre src définissez l'option base et il conservera le chemin d'origine de votre fichier less.

gulp.task('compileLess', function () {
  gulp.src('./*/less/*.less', {base: './'})
    .pipe(less())
    .pipe(gulp.dest( './dist' ));
});

Le ./dist la destination peut être n'importe quoi. Où que vous souhaitiez placer votre structure de fichiers.

Informations supplémentaires ici: https://github.com/wearefractal/glob-stream#options

86
CoryDorning