2016-07-13 9 views
0

Ich habe zwei DateiströmeGulp Rohr-Dateien in ZIP mit bestimmten Verzeichnis

var chromefiles = gulp.src(['./src/chrome/*', './external/jquery.js',  './icon/*']); 

var userscriptfiles = gulp.src(['./src/meta.js', './src/jquery.extensions.js', './src/*.js']) 
.pipe(concat('user.js')); 

, die ich in einer ZIP-Datei zusammenführen

return merge(chromefiles, userscriptfiles) 
.pipe(zip('overpress.zip')) 
.pipe(gulp.dest('./')); 

Ich mag würde alle Dateien aus „chromefiles“ in ein setzen Unterverzeichnis "chrome" und die Datei von "userscriptfiles" in ein Verzeichnis namens "userscript" in der Zip-Datei. Wie kann ich das erreichen?

overpress.zip 
    | 
    |-userscript 
    |  |-user.js 
    | 
    |-chrome 
     |-jquery.js 
     |-icon.png 
     |-someotherfile.js  

Antwort

3

Verwenden gulp-rename auf den chromefiles und userscriptfiles Ströme das entsprechende Verzeichnis auf jedem Dateipfad vorangestellt wird:

var rename = require('gulp-rename'); 

gulp.task('zip', function() { 
    var chromefiles = gulp.src([ 
     './src/chrome/*', 
     './external/jquery.js', 
     './icon/*' 
    ]) 
    .pipe(rename(function(file) { 
     file.dirname = 'chrome/' + file.dirname; 
    })); 

    var userscriptfiles = gulp.src([ 
     './src/meta.js', 
     './src/jquery.extensions.js', 
     './src/*.js' 
    ]) 
    .pipe(concat('user.js')) 
    .pipe(rename(function(file) { 
     file.dirname = 'userscript/' + file.dirname; 
    })); 

    return merge(chromefiles, userscriptfiles) 
    .pipe(zip('overpress.zip')) 
    .pipe(gulp.dest('./')); 
}); 
+0

Das ist perfekt. Danke! –

Verwandte Themen