2016-03-02 76 views
1

我创建了一个Gulp任务来导出Subversion的工作副本,然后将其压缩。隐藏(点)文件如.htaccess存在于导出的目录中,但不在ZIP中。我错过了什么?gulp-zip省略隐藏文件

下面是相关的代码:

var codigoProjecto = "foo"; 
var dirSalida = "./Servidor/archivos/tmp"; 

gulp.task('zip', function() { 
    var temp = require('temp'); 
    var path = require('path'); 
    var child_process = require('child_process'); 
    var zip = require('gulp-zip'); 

    var revision, nombreBase, dirExport; 

    temp.track(); 

    revision = child_process.execFileSync('svn', [ 
     'info', 
     '--show-item=last-changed-revision', 
     '--no-newline' 
    ]); 
    revision = parseInt(revision, 10); 

    nombreBase = codigoProjecto + " " + (new Date()).toISOString().slice(0,10) + ' r' + revision; 
    dirExport = path.join(temp.mkdirSync(codigoProjecto + "-"), nombreBase); 

    gutil.log('Exportando copia de trabajo...'); 
    child_process.execFileSync('svn', [ 
     'export', 
     '--quiet', 
     '-r', 'COMMITTED', 
     '.', 
     dirExport 
    ]); 
    gutil.log('Empaquetando código...'); 
    gulp.src([ 
     path.normalize(dirExport + '/..') + '/**', 
     '!' + dirExport + '/doc{,/**}', 
     '!' + dirExport + '/node_modules{,/**}', 
     '!' + dirExport + '/psd{,/**}', 
     '!' + dirExport + '/scripts-utiles{,/**}', 
     '!' + dirExport + '/*.txt', 
     '!' + dirExport + '/.htaccess', 
     '!' + dirExport + '/gulpfile.js', 
     '!' + dirExport + '/package.json' 
    ]) 
     .pipe(zip(nombreBase + '.zip')) 
     .pipe(gulp.dest(dirSalida)); 

    gutil.log("Salida: %s", gutil.colors.green.bold(path.resolve(dirSalida + '/' + nombreBase + '.zip'))); 
}); 
+0

尝试在路径中添加'dirExport +'/.*'''路径 – harishr

+0

刚刚尝试过我所有的组合可以想到的。恐怕我只能设法将顶级隐藏文件复制到错误的位置!无论如何感谢提示,我的问题必须与globstarred道路的辉煌。 –

+0

因为你可以做'dirExport +'./**/.*'',它也会添加内部隐藏文件 – harishr

回答

3

gulp.src()接受这些会用来将选项传递到下面的部件的second argumentnode-glob

类型:Object

选项传递给节点-glob通过glob-stream。

gulp支持node-glob和glob-stream支持的所有选项 除了忽略并添加以下选项。

就在那里was the answer

您可以在选项设置dot:true 使水珠治疗点作为普通字符。

所以瞧:

gulp.src([ 
    path.normalize(dirExport + '/..') + '/**', 
    '!' + dirExport + '/doc{,/**}', 
    // .... 
    '!' + dirExport + '/package.json' 
], { 
    dot: true 
}) 

从理论上讲,它应该是可以构成路径的水珠,其中包括明确点文件,但语法是相当的反直观:1)我找不到2)我得到了可怕的意外结果,如.htaccess文件从其位置移动到基本目录