2014-10-03 6 views
7

sytuacja:Kopiowanie plików z łykiem przy jednoczesnym zachowaniu czas modyfikacji

Obecnie mam trochę zadanie haustem, który przygotowuje moje pliki projektu, który będzie wykorzystany przez FTP. To nic nadzwyczajnego, ale ten prosty projekt nie potrzebuje więcej w tym momencie.

Całe zadanie wdrożyć ma „sub zadania”, które po prostu chwyta listę ścieżek, i kopiuje wszystkie pliki do katalogu __deploy:

/* 
    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)); 
}); 

To będzie kopiować pliki projektu do katalogu __deploy i wykluczenia wszystkie pliki konfiguracyjne gulp, bower, composer, a także SCSS i JS. Wykonywane przez niego zadanie deploy-cleanup po prostu usuwa katalog wdrażania.


Problem:

Jest częścią kodu projektów, które używa modyfikacji pliku Terminy tworzyć mapy witryn itp Niestety, takie zachowanie nie może być zmieniony.

Jest to pomocne, jeśli istnieje sposób na kopiowanie plików, tak jak to robi powyższe zadanie, jednak przy zachowaniu wszystkich dat modyfikacji plików (lub przynajmniej plików z określonego katalogu).

Czy istnieje sposób, aby to osiągnąć?

+0

Czy to nadal problem? Wygrzebałem się w kodzie źródłowym i zdecydowanie nie ma opcji, aby to włączyć, jednak nie widziałem żadnego wyraźnego miejsca, w którym aktualizował on zmodyfikowany czas. Zakładam, że jest to zachowanie domyślne w pewnej bibliotece. Brzmi jak coś podobnego do 'gulp.dest()' będzie musiało zostać utworzone, aby zapewnić, że zmodyfikowany czas nie zostanie zmieniony. – pgreen2

+0

Tak, nadal chciałbym móc kopiować pliki z zachowaniem znacznika modyfikacji. – DieserJonas

Odpowiedz

1

Można użyć do tego celu gulp-newer.

Oto przykład z niego:

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

Jak to zbyt potrzebne, ale nie mógł znaleźć coś odpowiedniego, pisałem o gulp-preservetime wtyczki, aby to zrobić.

Przykład:

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

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