gpt4 book ai didi

gulp - 使用 gulp 创建 tar 文件

转载 作者:行者123 更新时间:2023-12-02 03:45:33 25 4
gpt4 key购买 nike

我正在使用 gulp-tar 创建 tar 文件...如何添加顶级文件夹,以便当用户运行 tar -xzf myArchive.tar 时它解压到特定的文件夹中。

这是我的代码:

gulp.task('prod', ['min', 'gittag'], function() {

//copy all files under /server into a zip file
gulp.src('../server/**/*')
.pipe(tar('xoserver' + '-'+ gittag +'.tar'))
.pipe(gzip())
.pipe(gulp.dest('../prod'));
});

上面创建了一个 tar.zip文件没问题,但我必须小心添加 -C <folder>提取时,否则文件将提取到当前文件夹。

[已编辑]

我在这里想做的是生成格式为 xoserver-alpha-d414ddf.tar.gz 的 tarball当使用 tar xvf 提取时,将创建一个文件夹xoserver-alpha-d414ddf并解压其下的所有文件。本质上,我试图在打包文件上方添加新的文件夹名称。如果我添加 base选项,解压到的文件夹就是 server

[答案]

感谢 ddprrt 的良好回答。我正在复制最终代码,以防其他人想要使用类似的策略将 git 标签嵌入到 tarball 的名称中进行分发/测试。

gulp.task('gittag', function(cb) {   // generate the git tag 
git.exec({args : 'branch -v'}, function (err, stdout) {
var lines = stdout.split('\n');
for (var l in lines) {
if (lines[l][0] == '*') {
var words = lines[l].split(/\s+/);
gittag = words[1]+ '-' + words[2];
console.log('Gittag is %s', gittag);
break;
}
}
cb();
});
});

gulp.task('min', ['runbmin', 'template', 'vendor']); // generate min files

gulp.task('prod', ['min', 'gittag'], function() { // create tarball
//copy all files under /server into a zip file
return gulp.src('../server/**/*')
.pipe(rename(function(path) {
path.dirname = 'server-' + gittag + '/' + path.dirname;
}))
.pipe(tar('xoserver-'+gittag+'.tar'))
.pipe(gzip())
.pipe(gulp.dest('../prod'));
});

最佳答案

这就是 base 选项的用途。

gulp.task('prod', ['min', 'gittag'], function() {
return gulp.src('../server/**/*', { base: '../server/' })
.pipe(tar('xoserver' + '-'+ gittag +'.tar'))
.pipe(gzip())
.pipe(gulp.dest('../prod'));
});

有了它,你可以告诉 gulp 在处理你收到的 glob 时要包含哪些路径。

顺便说一句。不要忘记返回流或在任务中调用完成回调。帮助 gulp 编排您的构建管道

对于第二个问题,你可以使用 gulp-rename任务更改虚拟文件所在的目录。会是这样的

.pipe(rename(function(path) {
path.dirname = 'whatever/' + path.dirname
}));

关于gulp - 使用 gulp 创建 tar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29615291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com