0

我正在使用归档器压缩两个文件夹xy

const out = ... // file write stream
...
const zip = archiver('zip', {});
zip.on('error', (err: Error) => { throw err; });

zip.pipe(out);
zip.directory('x', 'x');
zip.directory('y', 'y');
zip.finalize();

zip 文件还可以,但unzip -l显示xy交错。
(看起来像archiver遍历xyBFS 顺序)。

x/x1
x/x2
y/y1
y/y2
x/x1/x11.txt
x/x2/x21.txt
y/y1/y11.txt

我想压缩xy以 DFS 顺序unzip -l显示:

x/x1
x/x1/x11.txt
x/x2
x/x2/x21.txt
y/y1
y/y1/y11.txt
y/y2

如何控制压缩目录和文件的顺序?

4

1 回答 1

1

您可以使用glob()方法而不是directory()使用 glob 模式匹配文件。

它将附加文件在DFS-order.

该指令应如下所示:

zip.glob('{x,y}/**/*');

完整代码示例:

import fs = require('fs');
import archiver = require('archiver');

let out = fs.createWriteStream(process.cwd() + '/example.zip');

const zip = archiver('zip', {});
zip.on('error', (err: Error) => { throw err; });

zip.pipe(out);
zip.glob('{x,y}/**/*');
zip.finalize();
于 2020-08-14T14:10:16.487 回答