56

尝试创建一个 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()?

还是我以错误的方式解决这个问题?

4

2 回答 2

88

在您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

于 2014-06-25T15:35:41.027 回答
30

你应该看看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 回调中的任何逻辑动态修改各个文件路径。

于 2014-03-07T08:55:00.790 回答