Глоток.js-использовать путь от gulp.src () in gulp.dest()

попытка создать задачу gulp, которая будет передавать кучу файлов из разных папок через LESS, а затем выводить их в папку на основе исходного источника. Рассмотрим такую структуру папок:

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

вот мой 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']);

Я знаю gulp.dest () ожидает, что путь будет передан, но в моем примере путь будет отличаться в зависимости от исходного файла. Итак, как я могу захватить путь из источника, изменить его, а затем передать его в глоток.dest ()?

или я иду по этому неправильному пути?

2 ответов


вы должны взглянуть на gulp-переименовать

довольно много:

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

вы уходите залпом.dest, указывающий на ваш конечный выходной dir, но измените на лету отдельные пути к файлам на основе любой логики, которую вы хотите внутри обратного вызова, чтобы gulp-rename.


в своем src установить base опция, и она будет поддерживать исходный путь вашего файла less.

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

на ./dist пункт назначения может быть чем угодно. Везде, где вы хотите, чтобы ваша файловая структура была размещена.

дополнительная информация здесь: https://github.com/wearefractal/glob-stream#options