gulp-zip пропускает скрытые файлы

Я создал задачу Gulp, чтобы экспортировать мою рабочую копию Subversion и затем отправить ее в ZIP-архив. Скрытые (точечные) файлы, такие как .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')));
});

1 ответ

Решение

gulp.src() принимает второй аргумент, который используется для передачи параметров базовому компоненту, node-glob:

Тип: Object

Опции для передачи на node-glob через glob-stream.

gulp поддерживает все параметры, поддерживаемые node-glob и glob-stream, кроме ignore, и добавляет следующие параметры.

Тут же был ответ:

Вы можете заставить glob рассматривать точки как обычные символы, установив dot:true в опциях.

Итак, вуаля

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

Теоретически, должна быть возможность составлять глобусы путей, которые явно включают точечные файлы, но синтаксис довольно нелогичен и: 1) я не мог найти, как это сделать глобально (то есть для всех подкаталогов) 2) я получил страшно неожиданное результаты, такие как .htaccess файлы перемещаются из своего местоположения в базовый каталог

Другие вопросы по тегам