【问题标题】:gulp-zip omits hidden filesgulp-zip 忽略隐藏文件
【发布时间】:2016-03-02 11:22:19
【问题描述】:

我创建了一个 Gulp 任务来导出我的 Subversion 工作副本,然后将其压缩。 .htaccess 之类的隐藏(点)文件存在于导出的目录中,但不在 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')));
});

【问题讨论】:

  • 尝试在路径中添加dirExport + '/.*''
  • 刚刚尝试了我能想到的所有组合。恐怕我只能将顶级隐藏文件复制到错误的位置!无论如何感谢您的提示,我的问题一定与 globstarred 路径的壮丽有关。
  • 因为你可以这样做dirExport + './**/.*',它也会添加内部隐藏文件

标签: gulp gulp-zip


【解决方案1】:

gulp.src() 接受一个second argument,用于将选项传递给底层组件node-glob

输入:Object

通过 glob-stream 传递给 node-glob 的选项。

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

就在那里was the answer:

您可以通过设置 dot:true 使 glob 将点视为普通字符 在选项中。

所以瞧:

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

理论上,应该可以组合显式包含点文件的路径 glob,但语法相当违反直觉,并且:1) 我无法找到如何在全局范围内执行此操作(即针对所有子目录) 2) 我得到了可怕的意外结果,例如 .htaccess 文件从它们的位置移动到基目录

【讨论】:

    猜你喜欢
    • 2015-04-09
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 2015-10-08
    • 2012-08-07
    • 1970-01-01
    相关资源
    最近更新 更多