2016-12-02 13 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")); 
}); 
関連する問題