我尝试使用gulp将文件从多个位置复制到一个中心位置。我不想保留它们从EXCEPT复制的目录路径结构,以便从一个im复制中复制目录(希望这是有意义的)。
因此在我的示例中,我只想保留images
目录中的任何结构。
我有:
var files = [
'path/to/wp/my-mu-plugins/**/build/theme/images/**/*',
'path/to/wptheme/build/theme/images/**/*',
'bower_components/jquery-ui/themes/base/images/**/*',
'bower_components/jquery-ui/themes/ui-lightness/images/**/*',
];
return gulp.src(files)
.pipe(gulp.dest('public_html/assets/images/'));
我尝试过改变basename,base,dir以及使用glob来拉入它们的不同组合 - 但我总是以平面结构或从我复制的整个结构结束。
我需要实现这种巫术的组合 - 或者这是不可能的?
谢谢=)
编辑:我认为我的问题在于path/to/wp/my-mu-plugins/**
路径,这就是麻烦开始的地方......
答案 0 :(得分:1)
当写入dest()
位置时,gulp会从每个文件的路径中删除一条基本路径。如果没有提供明确的基本路径,gulp(实际上是vinyl-fs)假设第一个glob的所有内容都是基本路径。
在您的情况下,这意味着'path/to/wp/my-mu-plugins/'
被假定为匹配'path/to/wp/my-mu-plugins/**/build/theme/images/**/*'
的所有内容的基本路径。
虽然您可以使用base option to src()
指定显式基本路径,但这对您没有多大用处,因为基本选项不支持通配并且您不知道哪个或多少个子目录匹配{ {1}}。
但是,您可以使用基本选项来禁用默认行为,然后使用gulp-rename从路径中删除所有内容,包括'my-mu-plugins/**'
文件夹:
/images/