nodejs archiver
时间: 2024-12-26 16:20:23 浏览: 11
### 使用 `archiver` 模块进行文件归档和压缩
#### 安装依赖包
为了使用 `archiver` 进行文件的归档操作,需先安装此模块以及可能用到的操作文件系统的辅助工具:
```bash
npm install archiver fs-extra
```
#### 创建简单的ZIP档案实例
下面是一个基本的例子来展示怎样利用 `archiver` 来创建一个包含单个文本文件的 ZIP 文件。
```javascript
const fs = require('fs');
const archiver = require('archiver');
// 创建输出流 (目标 .zip 文件)
let output = fs.createWriteStream(__dirname + '/example.zip');
let archive = archiver('zip', {
zlib: { level: 9 } // 设置压缩级别
});
output.on('close', function () {
console.log(archive.pointer() + ' total bytes'); // 输出总字节数
console.log('archiver has been finalized and the output file descriptor has closed.'); // 归档完成提示
});
// 将数据事件监听器附加给输出流
archive.on('error', function (err) {
throw err;
});
// 管道连接至输出流
archive.pipe(output);
// 向归档中添加文件
archive.append('Hello world!', { name: 'hello.txt' });
// 结束归档并触发最终化过程
archive.finalize();
```
这段代码展示了如何设置一个写入流指向要生成的目标 `.zip` 文件,并配置了一个新的 `archiver` 实例指定使用的格式为 `zip`[^1]。接着定义了一些必要的错误处理逻辑,在最后向归档内追加了一条纯文本记录作为示例文件的内容,之后调用了 `finalize()` 方法结束整个归档流程[^2]。
#### 添加多个文件或目录到ZIP档案
如果想要把更多类型的资源加入到同一个 ZIP 中,则可以继续调用 `append`, 或者更方便的是直接通过路径参数传递给方法 `bulk`:
```javascript
archive.bulk([
{ expand: true, cwd: './src/', src: ['**'], dest: '/' }
]);
```
这里指定了源文件夹 (`./src/`) 下所有的子项都会被复制到根位置 `/` 下面形成相应的结构[^4]。
阅读全文