gulp.src() 方法排除目录

在构建gulp项目的时候 需要排除
/src/less/a.less
/src/m1/less/b.less
src/m2/less/c.less
src/m1/s1/less/d.less
只要是less目录和他的子目录全去掉 包含less/ 本身
下面的写法去掉了子文件 但是 复制后的项目中还是有空的less文件夹
求高手指导一下

gulp.src(['./src/**/*','!./src/**/less/**/*'])
.pipe(gulp.dest('./dist/'));

试过的写法

['./src/**/*','!./src/**/less/'],['./src/**/*','!./src/**/less/*']

都达不到目的

阅读 16k
5 个回答

正好我也遇到了这个问题,既然搜索到了,还是贴下答案~

gulp.task('copy', function() {
    return gulp.src(['src/**/*', '!src/less', '!src/less/**', '!src/**/less', '!src/**/less/**'])
               .pipe(gulp.dest('dist'));
    //我的理解是:
    //'!src/less'排除src子less目录(一级后代)本身,'!src/less/**'排除子less目录内的所有文件
    //'!src/**/less'和'!src/**/less/**'同理,不过这里的less目录是除子目录之外的所有后代less目录
});

gulp copy //执行复制任务

按照楼主的目录结构测试通过,符合楼主说的效果

['./src/**/*.less','!./src/**/less/**/*.less']

试试

经测试gulp只能识别文件不能识别文件夹,因此想到一个办法就是把scss文件放到css目录中,通过'!'进行过滤不必要的scss文件

//只编译以style-开头的scss文件
gulp.task('sass', function() {
    return gulp.src('src/css/*style-.scss')
    .pipe(cached('sass'))
    .pipe(sass())
    .pipe(autoprefixer('last 6 version'))
    .pipe(gulp.dest('src/css'));
});

//dist任务
gulp.task('dist', function() {
    return gulp.src('src/css/*.css')
    .pipe(gulp.dest('dist/css'));
});

这样就能控制编译文件的数量和发布的类型

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