Gulp.js - использовать путь из gulp.src() в 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() ожидает, что путь будет передан, но в моем примере путь будет отличаться в зависимости от исходного файла. Итак, как я могу получить путь из источника, изменить его и затем передать его в gulp.dest()?
Или я иду по этому пути неправильно?
2 ответа
Вы должны взглянуть на gulp-rename
Довольно много:
gulp.src('./*/less/*.less')
.pipe(less())
.pipe(rename(function(path){
// Do something / modify the path here
}))
.pipe(gulp.dest('./finalRootDestination'))
Вы оставляете gulp.dest указывающим на ваш конечный выходной каталог, но на лету изменяете пути к отдельным файлам, основываясь на любой логике, которую вы хотите в обратном вызове для gulp-rename.
В вашем src
установить base
вариант, и он будет поддерживать исходный путь вашего файла меньше.
gulp.task('compileLess', function () {
gulp.src('./*/less/*.less', {base: './'})
.pipe(less())
.pipe(gulp.dest( './dist' ));
});
./dist
пункт назначения может быть чем угодно. Везде, где вы хотите, чтобы ваша файловая структура была размещена.
Дополнительная информация здесь: https://github.com/wearefractal/glob-stream