如何findgulp.dest()中父目录的path?

我是Gulp的新来者,当我尝试将我的文件输出到他们父母的path时,我得到了股票。

我的目录是这样的:

app/page_a/less/a.less app/page_a/css 

我的目标是:

 app/page_a/less/a.less app/page_a/css/a.css 

这是我在做什么:

我使用**是因为我想匹配我所有的page_ *模块。

 gulp.task('test', function () { var files = ['./app/**/*.less']; return gulp.src(files, { base: '.' // Now the base url becomes where the *.less is. }) .pipe(less()) .pipe(gulp.dest('.')); }); 

我的结果:(这显然是错误:()

 app/page_a/less/a.less app/page_a/less/a.css app/page_a/css 

那么我怎样才能输出*.css到相应的app/page_*/csspath?

您在gulp.src()base选项中指定的path不是相对于每个相应的.less文件,而是相对当前的工作目录。 这通常是你的Gulpfile.js所在的目录。

你实际上想要做的是在less()插件运行后改变每个生成的.css文件的path,所以当.css文件被写入gulp.dest()所指定的目录时, /less/部分path已被replace为/css/

这正是gulp-rename插件的作用:

 var gulp = require('gulp'); var less = require('gulp-less'); var rename = require('gulp-rename'); gulp.task('default', function () { return gulp.src( './app/**/*.less') .pipe(less()) .pipe(rename(function(file) { file.dirname = file.dirname.replace(/less$/, "css"); })) .pipe(gulp.dest('./app/')); }); 

用gulp.dest('。')你说'在这里'尝试着:

 .pipe(gulp.dest('./app/page_a/css/')); 

这应该是工作