转载

gulp 3.9.1: src中路径中的/**/位置会影响目标文件夹结构

本文测试环境 gulp 3.9.1, Node.js v6.1.0

今天被gulp坑了不少时间,一个简单的 gulp.srcgulp.dest 操作竟然结果不一样,原来 gulp.src 中glob的不同竟然会影响 gulp.dest 中目标文件夹的结构。

假设在源代码文件夹中有这样的目录:

css/   b/     b.css   a.css 

如果在 src glob中 ** 前包含 css 如下:

gulp.task('css', function() {     let dest = '../dist';     return gulp.src(['css/**/*.css'])         .pipe(changed(dest))         .pipe(debug()) //gulp-debug         .pipe(cleanCSS({compatibility: 'ie8'})) //gulp-clean-css         .pipe(gulp.dest(dest)); }); 

运行后,目标文件夹内不会保留源目录中最外的 css 文件夹,类似这样:

dist/   b/     b.css   a.css 

但如果glob中的 ** 在最前(注意这样可能会匹配到其他不相关文件,可以做一些屏蔽比如 node_modules 文件夹),最外的 css 文件夹就会保留,代码如下:

gulp.task('css', function() {     let dest = '../dist';     return gulp.src(['./**/*.css', '!./node_modules/**'])         .pipe(changed(dest))         .pipe(debug()) //gulp-debug         .pipe(cleanCSS({compatibility: 'ie8'})) //gulp-clean-css         .pipe(gulp.dest(dest)); }); 

运行后的 dist 目录:

dist/   css/     b/       b.css     a.css 
原文  https://www.mgenware.com/blog/?p=3110
正文到此结束
Loading...