如何使用gulp-zip

时间:2017-11-04 23:55:53

标签: gulp zip gulp-zip

我尝试使用gulp-zip来构建包含版本号的zip文件,但是在提取时将提取物提取到没有版本号的文件夹。

如果我通常压缩文件夹,然后重命名它,然后解压缩,文件被解压缩到原始文件夹名称,我假设因为目标参数已设置。如果我使用gulp-zip(先将其压缩然后用版本号重命名)进行相同操作,则会对包含版本号的文件夹进行提取。

var packageJSON = require('./package.json');
var fileName = packageJSON.name;
var fileVersion = packageJSON.version;

var zip = require('gulp-zip');
var rename = require('gulp-rename');

var buildTemp = './temp-build/';
var buildInclude = [ '**/*', '!package*.json', '!node_modules/' ];

gulp.task('buildZip', function () {
    return gulp.src(buildTemp + '/**/')
        .pipe(zip(fileName + '.zip'))
        .pipe(gulp.dest('./'))
        .pipe(notify({message: 'Zip task complete', onLast: true}));
});

gulp.task('renameZip', function () {
    return gulp.src(fileName + '.zip')
        .pipe(rename(fileName + '-' + fileVersion + '.zip'))
        .pipe(gulp.dest('.././'))
        .pipe(notify({message: 'Zip renamed and moved up', onLast: true}));
});


gulp.task('build', function (cb) {
    runSequence('buildZip', 'renameZip', cb);
});

这一切都有效。我在名为filename.zip的gulproot中获得了一个zip文件,我在上面的目录中得到一个名为filename-version.zip的文件。问题是当我解压缩filename-version.zip时,它会提取到/ filename-version /.

这里也提到了这个问题:https://github.com/sindresorhus/gulp-zip/issues/88并提到了Stack Exchange并在这里引用了https://github.com/sindresorhus/gulp-zip/pull/35,推荐的解决方案是使用重命名,但似乎并没有实际工作。

我相信我需要通过gulp-zip选项来指定zip目的地,但我不知道该怎么做,或者甚至可能。

1 个答案:

答案 0 :(得分:1)

经过大量的调整后,我终于找到了神奇的组合。

首先,我需要创建一个具有我想要的目标名称的临时目录。其次,我需要在src glob中加入base。

var packageJSON = require('./package.json');
var fileName = packageJSON.name;
var fileVersion = packageJSON.version;

var zip = require('gulp-zip');
var rename = require('gulp-rename');

var buildTemp = fileName;
var buildInclude = [ '**/*', '!package*.json', '!node_modules/' ];

gulp.task('buildZip', function () {
    return gulp.src(buildTemp + '/**/', {base: './'})
        .pipe(zip(fileName + '.zip'))
        .pipe(gulp.dest('./'))
        .pipe(notify({message: 'Zip task complete', onLast: true}));
});

gulp.task('renameZip', function () {
    return gulp.src(fileName + '.zip')
        .pipe(rename(fileName + '-' + fileVersion + '.zip'))
        .pipe(gulp.dest('.././'))
        .pipe(notify({message: 'Zip renamed and moved up', onLast: true}));
});


gulp.task('build', function (cb) {
    runSequence('buildZip', 'renameZip', cb);
});