Gulp.js - 在gulp.dest()中使用gulp.src()中的路径

时间:2014-03-07 03:41:47

标签: gulp less.js gulp-less

尝试创建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 个答案:

答案 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的任何逻辑,动态修改各个文件路径。