本文测试环境 gulp 3.9.1, Node.js v6.1.0
今天被gulp坑了不少时间,一个简单的 gulp.src
和 gulp.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