# 7z-iterator 中文文档

规范地址：https://npmcn.com/package/7z-iterator/

版本：2\.2\.13
npm 元数据更新时间：2026-10-12T05:49:36.560Z
中文译文更新时间：2026-11-05T17:34:31.707Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/7z-iterator
原文对照：https://npmcn.com/package/7z-iterator/?lang=original
项目主页：https://github.com/kmalakoff/7z-iterator
源码仓库：https://github.com/kmalakoff/7z-iterator

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：907 kB，166 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=0\.8
- 运行依赖：12 个
- 首次发布：2025-12-01T05:40:55.363Z
- 最新版本发布：2026-10-12T05:49:36.422Z
- 近 30 天下载量：243955（2026-10-04 至 2026-11-02，npm 官方下载统计）
- 已发布版本数：56（近 12 个月 56 个）

## 中文简介

使用 API 从 7z 档案中提取内容 。 纯JavaScript,工作于节点0.8+

## 安装

```sh
npm install 7z-iterator
```

也可以使用：`pnpm add 7z-iterator`、`yarn add 7z-iterator`、`bun add 7z-iterator`

## README

# 7z -- -- 提振器

从一个7z的档案中读取条目,其中包含一个Aync interator,承诺,调回,或可读流. 来源可以是归档路径或可读流.

## 安装

```sh
npm install 7z-iterator
```

## 提取归档

```js
const SevenZipIterator = require('7z-iterator');

async function extract(archivePath, destination) {
  const iterator = new SevenZipIterator(archivePath);
  const links = [];

  try {
    for await (const entry of iterator) {
      if (entry.type === 'link') links.unshift(entry);
      else if (entry.type === 'symlink') links.push(entry);
      else await entry.create(destination, { strip: 1 });
    }

    // Create links after their target directories and files.
    for (const entry of links) await entry.create(destination, { strip: 1 });
  } finally {
    iterator.destroy();
  }
}

extract('./archive.7z', './output').catch((error) => {
  console.error(error);
  process.exitCode = 1;
});
```

### 旧节点恢复API.js

节点.js 0.8+可以使用回调形式代替 `for await`数字 :

```js
var SevenZipIterator = require('7z-iterator');
var iterator = new SevenZipIterator('./archive.7z');
var links = [];

function createLinks(index, callback) {
  if (index === links.length) return callback();
  links[index].create('./output', { strip: 1 }, function(error) {
    if (error) return callback(error);
    createLinks(index + 1, callback);
  });
}

iterator.forEach(function(entry, callback) {
  if (entry.type === 'link') { links.unshift(entry); callback(); }
  else if (entry.type === 'symlink') { links.push(entry); callback(); }
  else entry.create('./output', { strip: 1 }, callback);
}, { callbacks: true, concurrency: 1 }, function(error) {
  if (error) throw error;
  createLinks(0, function(error) {
    iterator.destroy();
    if (error) throw error;
    console.log('Extraction complete');
  });
});
```

`entry.create(destination, options)` 写入文件、目录或链接。 使用 `{ force: true }` 以覆盖已存在的条目。 例如, 将归档密码传递给执行器构建器 `new SevenZipIterator(archivePath, { password: 'secret' })`。可读流源被缓冲到临时文件,因为7z解析需要随机访问.

## 限制

节点.js 0.8+得到支持,但更早的释放最大值较小 `Buffer` 尺寸。 LZMA1文件夹必须装入一个缓冲器;LZMA2可以递增流出并被选入大型档案. 在Node.js 0.8-4.x上,大于约1GB的档案无法可靠地处理.

## 常见问题

### 7z-iterator 是什么？

使用 API 从 7z 档案中提取内容 。 纯JavaScript,工作于节点0\.8\+

### 如何安装 7z-iterator？

在项目目录运行 npm install 7z-iterator，或使用 pnpm add / yarn add / bun add。

### 7z-iterator 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### 7z-iterator 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### 7z-iterator 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=0\.8。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### 7z-iterator 可以商用吗？

7z-iterator 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### 7z-iterator 的下载量有多少？

根据 npm 官方下载统计，7z-iterator 在 2026/10/04 – 2026/11/02 这 30 天内被下载 243,955 次，日均约 8,132 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### 7z-iterator 还在维护吗？

最新版本 2\.2\.13 发布于 2026/10/12（24 天前）；至今共发布 56 个版本，其中过去 12 个月发布了 56 个；首次发布于 2025/12/01。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

