使用gulp复制文件,同时保留修改时间

Die*_*nas 9 gulp

情况:

我目前有一个小小的任务,准备我的项目文件通过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));
});
Run Code Online (Sandbox Code Playgroud)

这会将项目文件复制到一个__deploy目录中,并排除所有gulp,bower,composer配置文件以及SCSS和JS源代码.deploy-cleanup它调用的任务只是清理部署目录.


问题:

有一部分项目代码使用文件修改日期来创建站点地图等.不幸的是,这种行为无法改变.

因此,如果有一种方法可以像上面的任务一样复制文件,那么这将是有帮助的,但同时保留所有文件修改日期(或至少来自指定目录的文件).

有没有办法实现这个目标?

Ric*_*ard 12

因为我也需要这个,但找不到合适的东西,我已经写了gulp-preservetime插件来做.

例:

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

gulp.task('default', function() {
    gulp.src('./src/**/*')
        .pipe(gulp.dest('./dest'))
        .pipe(preservetime());
});
Run Code Online (Sandbox Code Playgroud)