2014-10-03 144 views
7

現狀:複製文件與一飲而盡,同時保留修改時間

我目前有準備我的項目文件通過FTP部署一點點吞掉任務。這沒什麼特別,但這個簡單的項目目前並不需要更多。

整個部署任務有一個「子任務」,這只是抓住的路徑列表,並且將所有文件複製到一個__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)); 
}); 

這將項目文件複製到一個__deploy目錄,而排除所有的gulp,bower,作曲家配置文件以及SCSS和JS來源。它調用的deploy-cleanup任務只是清除部署目錄。


問題:

還有就是使用文件的修改日期創建網站地圖的項目代碼等的一部分不幸的是,這種行爲不能被改變。

因此,如果有辦法像上述任務那樣複製文件,但保留所有文件修改日期(或至少來自指定目錄的文件),將會有所幫助。

有沒有辦法做到這一點?

+0

這仍然是一個問題嗎?我在源代碼中挖掘出來,並且絕對沒有選擇啓用它,但是我沒有看到它更新修改時間的明確位置。我會認爲這是某個庫的默認行爲。聽起來像'gulp.dest()'類似的東西需要被創建,以確保修改時間不會被改變。 – pgreen2 2014-12-21 14:36:45

+0

是的,我仍然希望能夠在保留修改時間戳的同時複製文件。 – DieserJonas 2014-12-23 12:20:44

回答

1

您可以使用gulp-newer

在這裏,例如,從它:

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

因爲我需要這個了,但是找不到合適的東西,我已經寫了gulp-preservetime插件來做到這一點。

例子:

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

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