gulp从多个位置复制,不保留结构

时间:2016-02-08 14:52:29

标签: node.js gulp

我尝试使用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/**路径,这就是麻烦开始的地方......

1 个答案:

答案 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/