2014-10-03 5 views
7

Situation Erhaltung:Kopieren von Dateien mit großen Schluck, während Änderungszeit

Im Moment habe ich ein wenig schlucken Aufgabe, die meine Projektdateien bereitet via FTP bereitgestellt werden. Es ist nichts Besonderes, aber dieses einfache Projekt braucht zu diesem Zeitpunkt nicht mehr.

Die ganze deploy Aufgabe hat eine „Unteraufgabe“, die einfach eine Liste von Pfaden packt, und kopiert alle Dateien in ein __deploy Verzeichnis:

/* 
    Path: Folder path for a prepared deploy 
*/ 
var deployBasePath = '__deploy/'; 


/* 
    Paths: Include all paths into deploy and excluded unneeded files. 
*/  
var deployIncludePaths = [ 
    '**/*', 
    '.htaccess', 
    '!{__deploy,__deploy/**}', 
    '!{.git,.git/**}', 
    '!assets/{js-sources,js-sources/**}', 
    '!assets/{scss,scss/**}', 
    '!assets/{vendor,vendor/**}', 
    '!{node_modules,node_modules/**}', 
    '!{panel,panel/**}', 
    '!thumbs/**', 
    '!.bowerrc', 
    '!.gitignore', 
    '!.gitmodules', 
    '!bower.json', 
    '!composer.{json,lock}', 
    '!gulpfile.js', 
    '!package.json', 
    '!readme.md' 
]; 


gulp.task('deploy-copy', ['deploy-cleanup', 'css', 'js'], function() { 
    return gulp.src(deployIncludePaths) 
     .pipe(gulp.dest(deployBasePath)); 
}); 

Dadurch werden die Projektdateien in einem __deploy Verzeichnis kopieren und ausschließen Alle Schluck-, Bower-, Composer-Konfigurationsdateien sowie SCSS- und JS-Quellen. Die deploy-cleanup Aufgabe, die es aufruft, bereinigt einfach das Bereitstellungsverzeichnis.


Problem:

Es gibt einen Teil der Projekte Code, Dateiänderung verwendet Daten Sitemaps erstellen usw. Leider kann dieses Verhalten nicht geändert werden.

Daher wäre es hilfreich, wenn es eine Möglichkeit gäbe, die Dateien genau wie oben beschrieben zu kopieren, jedoch unter Beibehaltung aller Änderungsdaten (oder zumindest Dateien aus einem bestimmten Verzeichnis).

Gibt es eine Möglichkeit, dies zu erreichen?

+0

Ist das noch ein Problem? Ich habe im Quellcode geforscht und es gibt definitiv keine Option, dies zu aktivieren, aber ich habe keinen expliziten Ort gesehen, an dem die modifizierte Zeit aktualisiert wurde. Ich würde annehmen, dass dies ein Standardverhalten einiger Bibliotheken ist. Klingt wie etwas, das 'gulp.dest()' ähnlich ist, muss erstellt werden, um sicherzustellen, dass die modifizierte Zeit nicht geändert wird. – pgreen2

+0

Ja, ich möchte trotzdem Dateien kopieren können, während der Modifikationszeitstempel erhalten bleibt. – DieserJonas

Antwort

1

Sie könnten gulp-newer dafür verwenden.

Hier am Beispiel von ihm:

var gulp = require('gulp'); 
var newer = require('gulp-newer'); 
var imagemin = require('gulp-imagemin'); 

var imgSrc = 'src/img/**'; 
var imgDest = 'build/img'; 

// Minify any new images 
gulp.task('images', function() { 

    // Add the newer pipe to pass through newer images only 
    return gulp.src(imgSrc) 
     .pipe(newer(imgDest)) 
     .pipe(imagemin()) 
     .pipe(gulp.dest(imgDest)); 

}); 

gulp.task('default', function() { 
    gulp.watch(imgSrc, ['images']); 
}); 
9

Während ich dies auch nötig, aber kann nichts geeignet finden, habe ich das gulp-preservetime Plugin geschrieben, es zu tun.

Beispiel:

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

gulp.task('default', function() { 
    gulp.src('./src/**/*') 
     .pipe(gulp.dest('./dest')) 
     .pipe(preservetime()); 
});