# pako 中文文档

规范地址：https://npmcn.com/package/pako/

版本：3\.0\.3
npm 元数据更新时间：2026-10-26T21:04:01.559Z
中文译文更新时间：2026-11-05T02:14:20.858Z
软件包许可：\(MIT AND Zlib\)

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

原始 npm 页面：https://www.npmjs.com/package/pako
原文对照：https://npmcn.com/package/pako/?lang=original
项目主页：https://github.com/nodeca/pako#readme
源码仓库：https://github.com/nodeca/pako

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

- 包体积（解压后）：2.5 MB，20 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2014-02-19T16:02:05.385Z
- 最新版本发布：2026-10-26T21:04:01.372Z
- 近 30 天下载量：527190388（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：36（近 12 个月 5 个）

## 中文简介

Zlib移植到javascript -快速，模块化，浏览器支持

## 安装

```sh
npm install pako
```

也可以使用：`pnpm add pako`、`yarn add pako`、`bun add pako`

## README

# pako

[![CI](https://github.com/nodeca/pako/workflows/CI/badge.svg)](https://github.com/nodeca/pako/actions) [![NPM version](https://img.shields.io/npm/v/pako.svg)](https://www.npmjs.org/package/pako)

> 非常快的zlib兼容的JavaScript压缩。

## 为什么丸子很酷

-   **Binary-equivalent输出。** Pako产生的deflate/gzip字节与 原始 [zlib](http://www.zlib.net/) （1.3.2）和Node.js的补丁zlib。
-   **微小的浏览器包。** 完整的迷你包压缩在15K以下。 只压缩和只膨胀的构建更小。
-   **非常快。** 性能与现代JavaScript中的原生zlib相当 引擎（参见基准测试）。

## 基准

节点v24, 1 MB输入样本：

```
deflate-pako x 14.27 ops/sec ±3.41% (37 runs sampled)
deflate-pako-zlib-hash x 10.60 ops/sec ±0.50% (29 runs sampled)
deflate-zlib x 30.30 ops/sec ±0.61% (51 runs sampled)
gzip-pako x 13.48 ops/sec ±0.50% (36 runs sampled)
inflate-pako x 138 ops/sec ±1.26% (75 runs sampled)
inflate-zlib x 397 ops/sec ±1.37% (81 runs sampled)
ungzip-pako x 125 ops/sec ±1.46% (73 runs sampled)
```

## 安装

```
npm install pako
```

> \[!请注意) 快速浏览一下 `dist/` 文件夹内容，请参见 [https://unpkg.com/pako@latest/](https://unpkg.com/pako@latest/)。

## 示例/ API

完整文件- [http://nodeca.github.io/pako/](http://nodeca.github.io/pako/)

```javascript
import { Deflate, Inflate, deflate, inflate } from 'pako';

// Deflate
//
const input = new Uint8Array();
//... fill input data here
const output = deflate(input);

// Inflate (simple wrapper can throw exception on broken stream)
//
const compressed = new Uint8Array();
//... fill data to uncompress here
try {
  const result = inflate(compressed);
  // ... continue processing
} catch (err) {
  console.log(err);
}

//
// Alternate interface for chunking & without exceptions
//

const deflator = new Deflate();

deflator.push(chunk1, false);
deflator.push(chunk2); // second param is false by default.
...
deflator.push(chunk_last, true); // `true` says this chunk is last

if (deflator.err) {
  console.log(deflator.msg);
}

const output = deflator.result;


const inflator = new Inflate();

inflator.push(chunk1);
inflator.push(chunk2);
...
inflator.push(chunk_last); // no second param because end is auto-detected

if (inflator.err) {
  console.log(inflator.msg);
}

const output = inflator.result;
```

CommonJS:

```javascript
const { deflate, inflate } = require('pako');
```

如果你需要整个API作为一个对象，使用namespace import：

```javascript
import * as pako from 'pako';
```

有时您可能希望使用字符串-例如，发送 字符串化对象到服务器。Pako的deflate检测输入数据类型和 在压缩之前自动将字符串重新编码为utf-8。高级膨胀 helper可以将utf-8输出解码回JavaScript字符串 `toText: true`。

```javascript
import { deflate, inflate } from 'pako';

const test = { my: 'super', puper: [456, 567], awesome: 'pako' };

const compressed = deflate(JSON.stringify(test));

const restored = JSON.parse(inflate(compressed, { toText: true }));
```

## 笔记

Pako不包含一些特定的zlib函数：

-   **缩小** - - - - - -方法 `deflateCopy`， `deflateBound`， `deflateParams`， `deflatePending`， `deflatePrime`， `deflateTune`。
-   **膨胀** - - - - - -方法 `inflateCopy`， `inflateMark`， `inflatePrime`， `inflateGetDictionary`， `inflateSync`， `inflateSyncPoint`， `inflateUndermine`。
-   高级充气/放气包装器（类）可能不支持某些刷新 模式。

## 作者

-   安德烈Tupitsin [@anrd83](https://github.com/andr83)
-   维塔利Puzrin [@puzrin](https://github.com/puzrin)

个人感谢：

-   维亚切斯拉夫·叶戈罗夫([@mraleph](https://github.com/mraleph))因为他太棒了 关于为v8优化JS代码的教程； [IRHydra](http://mrale.ph/irhydra/) Tool和他的建议。
-   大卫·杜邦切尔([@dduponchel](https://github.com/dduponchel))寻求帮助 测试。

原始实现（C语言）：

-   [zlib](http://zlib.net/) 作者：Jean-loup Gailly和Mark Adler。

## 许可证

-   MIT -所有文件，除了 `/src/zlib` 文件夹
-   ZLIB - `/src/zlib` 内容

## 常见问题

### pako 是什么？

Zlib移植到javascript -快速，模块化，浏览器支持

### 如何安装 pako？

在项目目录运行 npm install pako，或使用 pnpm add / yarn add / bun add。

### pako 支持 TypeScript 吗？

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

### pako 支持 ESM 还是 CommonJS？

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

### pako 可以商用吗？

pako 使用 \(MIT AND Zlib\) 许可。声明的许可为 \(MIT AND Zlib\)，请阅读许可原文确认使用条件。以上为概括，不构成法律意见，请以许可原文为准。

### pako 的下载量有多少？

根据 npm 官方下载统计，pako 在 2026/10/05 – 2026/11/03 这 30 天内被下载 527,190,388 次，日均约 17,573,013 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### pako 还在维护吗？

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

