gpt4 book ai didi

node.js - 使用 ArchiverJS 从 git ls-files 列表创建 Zip 存档

转载 作者:太空宇宙 更新时间:2023-11-04 00:40:02 25 4
gpt4 key购买 nike

我正在尝试使用 archiverjs 创建 zip 存档仅包含 git ls-files 会显示的文件,减去一些排除项。

我获取文件名的代码是

var listFiles = function() {
var promise = new Promise(function (resolve, reject) {
var exec = require('child_process').exec;
var child;

child = exec("cd ..; git ls-files", function (error, stdout, stderr) {
if (error !== null) {
return reject(error)
}

var result = stdout.split("\n");
resolve(result);
});
});
return promise;
};

然后我的实际捆绑函数看起来像

DeploymentUtil.prototype.CreateApplicationVersionBundle = function (pathToApplication,
versionLabel,
target) {
var promise = new Promise(function (resolve, reject) {
// Create the archive
var output = fs.createWriteStream(versionLabel + ".zip");
output.on('close', function () {
resolve(output);
});

var archive = archiver.create("zip");

// Error handling
archive.on('error', function (err) {
reject(err);
});

// get the files from git
listFiles().then(function(files) {
var exclusions = [
'!**/.keep',
'!.codeclimate.yml',
'!.csslintrc',
'!.travis.yml',
'!env_sample',
'!spec/**'
];

for(var i = 0, l = 9; i < l; i++ ) {
console.log(files[i]);
}

archive.bulk([{
expand: true,
cwd: pathToApplication,
src: files.concat(exclusions),
dot: true
}]);

archive.pipe(output);
archive.finalize();
}).catch(reject);
});
return promise;
}

运行此archive.bulk会引发错误:必须提供模式

如果我用 [**/**] 替换 src: files.concat(exclusions) 但它有效(只有我得到了很多我不知道的文件)不想在我的文件中)。

我该如何解决这个问题?

最佳答案

git ls-files 的输出将包含一个终止换行符。

当您对结果调用split("\n")时,您将得到一个数组,其中最后一个元素是空字符串("")。

ArchiverJS 可能不喜欢空字符串作为模式。

一种解决方案是在分割之前修剪字符串:

var result = stdout.trim().split("\n");

关于node.js - 使用 ArchiverJS 从 git ls-files 列表创建 Zip 存档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37245942/

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