2016-04-07 5 views
0

Hier ist, was ich gerade mache. Es funktioniert, aber wenn ich mehr Fliegen umbenennen wollen, dann mit viel Aufgaben werde ich am Ende:Kann ich zwei Dateien mit einer Aufgabe in Schluck umbenennen oder kopieren

gulp.task('rename_bundle_css', ['make_css_bundle'], function() { 
    return gulp.src('content/bundles/css.min.css') 
     .pipe(rename('css-' + md5File('content/bundles/css.min.css') + '.min.css')) 
     .pipe(gulp.dest('content/bundles/')); 
}); 

gulp.task('rename_bundle_css_zip', ['rename_bundle_css'], function() { 
    return gulp.src('content/bundles/css.min.css.gz') 
     .pipe(rename('css-' + md5File('content/bundles/css.min.css') + '.min.css.gz')) 
     .pipe(gulp.dest('content/bundles/')); 
}); 

Gibt es eine Weise, die ich diese beiden in die eine oder in gewisser Weise ich ein Umbenennungs kombinieren kann (oder kopieren) mehr als eine Datei in einer Aufgabe?

Antwort

1

Sie können eine Funktion gulp-rename passieren, die für jede Datei im Stream ein Objekt mit den folgenden Eigenschaften erhalten:

  • dirname: Pfad zu dem Verzeichnis, das die Datei in
  • basename ist: Name Datei ohne Dateierweiterung
  • extname: Dateierweiterung

Das Ändern von t hese benennt die Datei um.

Ihr Beispiel auf diese Weise neu geschrieben könnte wie folgt aussehen:

gulp.task('rename_bundle_css', ['make_css_bundle'], function() { 
    return gulp.src(['content/bundles/css.min.css', 
        'content/bundles/css.min.css.gz']) 
    .pipe(rename(function(file) { 
     var original = file.basename + file.extname.replace(/\.gz$/, ''); 
     var hash = md5File('content/bundles/' + original); 
     file.basename = file.basename.replace(/^css/, 'css-' + hash); 
    })) 
    .pipe(gulp.dest('content/bundles/')); 
}); 
Verwandte Themen