gulp直接dest 默认直接复制文件,不会设置文件的文件目录,在gulp >= 3.2.2后可以设置base来达到文件含目录

有以下文件/文件夹

1
2
3
4
-js/**/*
-css/**/*
-images/**/*
-index.html

想要转换成

1
2
3
4
5
-public
-js/**/*
-css/**/*
-images/**/*
-index.html

glob-stream versions >= 3.1.0 (used by gulp >= 3.2.2) accept a base option, which can be used to explicitly set the base.

只要gulp版本 >= 3.2.2; 可以使用base参数指定拷贝开始目录

1
2
3
4
5
6
7
8
// move
gulp.task('move', function() {
return gulp.src(
['js/**/*jquery*js', 'js/**/*bootstrap*js', 'images/**/*', 'css/**/*bootstrap*css'], {
base: './' //如果设置为 base: 'js' 将只会复制 js目录下文件, 其他文件会忽略
}
).pipe(gulp.dest('public'));
});

gulp.src(globs[, options]) 中options用法

存在文件 app/views/index.html, gulp代码如下

1
2
3
4
5
6
var src = 'index.html';
var opt = {
cwd: 'app/views',
base: 'app'
};
gulp.src(src, opt);

意思为: opt.cwd 路径下读取 src, 输出路径的 baseopt.base; 即输出路径为 views/index.html;
假设 opt.baseapp2 , 因为base路径基于 opt.cwd + src, 所以 输出路径为 , 即没有任何文件能输出

参考文档


文章若有纰漏请大家补充指正,谢谢~~
http://blog.xinshangshangxin.com SHANG殇