2016-12-02 123 views
0

在我的應用程序具有以下文件/文件夾結構:咕嘟咕嘟複製和扁平文件和文件夾

/components 
    /assets 
    /navbar 
     /assets 
      /stylehseets 
      /scripts 
    /sidebar 
     /assets 
      /stylesheets 
      /scripts 
    /editor 
     /assets 
      /stylehseets 
      /scripts 
      /icons 

然後我有一口任務,這些組件拼合爲一組文物。

var tools = { 
    copy: function (src, dest) { 
     return gulp 
      .src(src) 
      .pipe(gulp.dest(dest)); 
    } 
}; 

gulp.task("create-artifacts", function() { 
    tools.copy("./components/navbar/assets/**/*", "./artifacts"); 
    tools.copy("./components/sidebar/assets/**/*", "./artifacts"); 
    tools.copy("./components/editor/assets/**/*", "./artifacts"); 
}); 

這將導致下面的文件/文件夾結構:

/artifacts 
    /stylehseets 
    /scripts 
    /icons 

的問題是,我的組件文件夾將包含越來越多的組件,所以我想我一口任務是更聰明一點。

比方說,我現在想添加

/components 
    /messagebox 
     /assets 
      /stylehseets 
    /listbox 
     /assets 
      /stylesheets 
      /scripts 

現在我需要進入我的一飲而盡任務,並添加了複製的位置爲messageboxlistbox

gulp.task("create-artifacts", function() { 
    tools.copy("./components/navbar/assets/**/*", "./artifacts"); 
    tools.copy("./components/sidebar/assets/**/*", "./artifacts"); 
    tools.copy("./components/editor/assets/**/*", "./artifacts"); 

    // having to add these new components in... 
    tools.copy("./components/messagebox/assets/**/*", "./artifacts"); 
    tools.copy("./components/listbox/assets/**/*", "./artifacts"); 
}); 

我真正想要的是這樣的......

gulp.task("create-artifacts", function() { 
    return tools.copy("./components/*/assets/**/*", "./artifacts"); 
}); 

但是,這並不具有扁平化層級的期望的結果。我該怎麼辦?

回答

0

解決方案是使用gulp-flatten

var flatten = require("gulp-flatten"); 

gulp.task("create-artifacts", function() { 
    return gulp 
     .src("./components/*/assets/**/*") 
     .pipe(flatten({ includeParents: -1 })) 
     .pipe(gulp.dest("./artifacts")); 
});