如何使用gulp-zip指定zip目标文件夹名称

如何使用gulp-zip指定zip目标文件夹名称,gulp,zip,gulp-zip,Gulp,Zip,Gulp Zip,我试图使用gulp-zip来构建一个包含版本号的zip文件,但是当解压缩到一个没有版本号的文件夹时 如果我通常压缩一个文件夹,然后重命名它,然后解压它,那么文件将被提取到原始文件夹名,我假设是因为设置了destination参数。如果我使用gulp-zip(先压缩它,然后用一个版本号重命名它)执行相同的操作,则使用版本号提取文件夹 var packageJSON = require('./package.json'); var fileName = packageJSON.name; var f

我试图使用gulp-zip来构建一个包含版本号的zip文件,但是当解压缩到一个没有版本号的文件夹时

如果我通常压缩一个文件夹,然后重命名它,然后解压它,那么文件将被提取到原始文件夹名,我假设是因为设置了destination参数。如果我使用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);
});
这一切都有效。我在gulproot中得到一个名为filename.zip的zip文件,在上面的目录中得到一个名为filename-version.zip的文件。问题是当我解压filename-version.zip时,它会解压缩到/filename-version/

这里也有人问这个问题:这里提到了堆栈交换,这里提到了推荐的解决方案是使用重命名,但这似乎实际上不起作用


我相信我需要传递一个选项来gulp zip来指定zip目的地,但我不清楚该怎么做,或者这是否可行。

经过多次调整,我终于找到了神奇的组合

首先,我需要用我想要的目标名称创建一个临时目录。其次,我需要在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);
});