2014-10-03 79 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()); 
}); 
相关问题