2016-12-02 6 views
0

In meiner Anwendung habe ich die folgende Datei/Ordner-Struktur:Gulp kopieren und abflachen Dateien und Ordner

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

ich dann einen Schluck Aufgabe haben, diese Komponenten in einen Satz von Artefakte zu glätten.

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"); 
}); 

Daraus ergibt sich die folgende Datei/Ordner-Struktur:

/artifacts 
    /stylehseets 
    /scripts 
    /icons 

Das Problem ist, dass meine Komponenten Ordner immer mehr Komponenten enthalten wird, so würde ich meine schluck Aufgabe wie ein sein etwas schlauer.

Sagen Sie zum Beispiel, habe ich jetzt

/components 
    /messagebox 
     /assets 
      /stylehseets 
    /listbox 
     /assets 
      /stylesheets 
      /scripts 
hinzufügen möchten

Jetzt muss ich in meine schluck Aufgabe gehen und Kopie Standorte für messagebox und listbox hinzufügen.

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"); 
}); 

Was ich wirklich will, so etwas wie dieses ...

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

Aber das hat nicht das gewünschte Ergebnis der Hierarchie Abflachung. Was mache ich?

Antwort

0

Die Lösung war gulp-flatten zu verwenden.

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

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