首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用gulp zip指定zip目标文件夹名

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

Stack Overflow用户
提问于 2017-11-04 23:55:53
回答 2查看 1.2K关注 0票数 1

我试图使用gulp构建一个包含版本号的zip文件,但是当提取到一个没有版本号的文件夹时。

如果我通常压缩一个文件夹,然后重命名它,然后解压缩它,文件将被解压到原始文件夹名,我假设是因为目标参数设置了。如果我使用gulp(先将其压缩,然后用版本号重命名)进行同样的操作,则会对带有版本号的文件夹进行提取。

代码语言:javascript
复制
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的zip文件,并在上面的目录中得到一个名为filenameversion.zip的文件。问题是当我解压缩文件名-version.zip时,它提取到/filename-version/。

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

我相信我需要通过一个选项来指定压缩目的地,但我不清楚如何做到这一点,甚至可能的话。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-05 01:25:10

经过多次调整后,我终于找到了魔法组合。

首先,我需要创建一个具有我想要的目标名称的临时目录。第二,我需要倾斜的基地在src全球。

代码语言:javascript
复制
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);
}); 
票数 2
EN

Stack Overflow用户

发布于 2022-02-15 20:30:45

一种更直接的方法是:

代码语言:javascript
复制
gulp.src(distDir + '/**', {base: distDir})
    .pipe(rename(function(file) {
        file.dirname = projectName + '/' + file.dirname;
    }))
    .pipe(zip(projectName + '-' + version +'.zip'))
    .pipe(gulp.dest('.'));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47116845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档