用gulp如何编译多个文件夹下的less

项目目录如图:
图片描述

2015、2016、2017文件夹和gulpfile.js、package、node_module同级。
我想自动编译每个文件夹下的less文件并生成在各自的css文件夹里,然后我写的代码如下:

var gulp = require('gulp'),
    less = require('gulp-less');

//LESS编译任务
gulp.task('less', function () {
    gulp.src('./*/less/*.less')
        .pipe(less())
        .pipe(gulp.dest('./*/css'));
});

gulp.task('default', function () {
    gulp.watch('./*/less/*.less', ['less']);
});

应该如何修改?

阅读 7.3k
4 个回答

一个是dest路径的问题,dest的路径是不能自行匹配的,并且gulp的输出结果是dest路径+glob路径,所以其实只要dest路径为'./'即可。然后less的默认选项应该是匹配到的less文件的同路径下输出css,我用的sass不清楚是否可以进行配置,但是可以在pipe中使用gulp-rename插件对流的位置进行改写。具体代码如下:

var gulp = require('gulp'),
    less = require('gulp-less'),
    rename = require('gulp-rename');
//LESS编译任务
gulp.task('less', function () {
    gulp.src('./*/less/*.less')
        .pipe(less())
        .pipe(rename(function (path) {
            console.log(path)
            path.dirname = path.dirname.replace('less', 'css');
        }))
        .pipe(gulp.dest('./'));
});

gulp.src('./**/less/*.less'),或者可以传数组。

可以创建task 然后使用run-sequence

可以考虑使用gulp-2b中的singleLess函数进行批量打包,gulp-2b

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题