尝试创建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()?
或者我是以错误的方式解决这个问题?
答案 0 :(得分:86)
在src
设置base
选项,它将保留较少文件的原始路径。
gulp.task('compileLess', function () {
gulp.src('./*/less/*.less', {base: './'})
.pipe(less())
.pipe(gulp.dest( './dist' ));
});
./dist
目的地可以是任何东西。无论您希望放置文件结构的哪个位置。
此处的其他信息: https://github.com/wearefractal/glob-stream#options
答案 1 :(得分:29)
您应该查看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的任何逻辑,动态修改各个文件路径。