Gulp.js – 在gulp.dest()中使用来自gulp.src()的path

尝试创build一个吞吐任务,将通过LESSpipe道从不同文件夹的一堆文件,然后将其输出到基于原始来源的文件夹。 考虑这个文件夹结构:

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()期望一个path被传入,但在我的例子中,path将根据源文件而不同。 那么如何从源代码抓取path,修改它,然后传递给gulp.dest()?

或者我正在做这个错误的方式?

你应该看看gulp-rename

非常多:

 gulp.src('./*/less/*.less') .pipe(less()) .pipe(rename(function(path){ // Do something / modify the path here })) .pipe(gulp.dest('./finalRootDestination')) 

你离开gulp.dest指向你最终的输出目录,但是根据你想要的callback中的任何逻辑来dynamic修改单个文件path的gulp-rename。

在你的src设置base选项,它将保持你较less的文件的原始path。

 gulp.task('compileLess', function () { gulp.src('./*/less/*.less', {base: './'}) .pipe(less()) .pipe(gulp.dest( './dist' )); }); 

./dist目的地可以是任何东西。 无论你想要放置文件结构。

附加信息在这里: https : //github.com/wearefractal/glob-stream#options

Interesting Posts