如何在gulp.dest()中使用gulp.src()的路径?

z9zf31ra  于 2022-12-08  发布在  Gulp
关注(0)|答案(2)|浏览(228)

尝试创建一个gulp任务,它将通过LESS从不同的文件夹中传输一堆文件,然后将它们输出到基于原始源的文件夹中。考虑以下文件夹结构:

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

下面是我的吞咽档案:

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()呢?
还是我想错了?

o4tp2gmn

o4tp2gmn1#

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

wfypjpf4

wfypjpf42#

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

相关问题