# @amoo-miki/compression-webpack-plugin 中文文档

规范地址：https://npmcn.com/package/%40amoo-miki/compression-webpack-plugin/

版本：4\.0\.1-rc\.1
npm 元数据更新时间：2023-03-16T16:44:35.356Z
中文译文更新时间：2026-11-06T01:03:45.193Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40amoo-miki/compression-webpack-plugin
原文对照：https://npmcn.com/package/%40amoo-miki/compression-webpack-plugin/?lang=original
项目主页：https://github.com/AMoo-Miki/compression-webpack-plugin
源码仓库：https://github.com/AMoo-Miki/compression-webpack-plugin

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

- 包体积（解压后）：28.3 kB，8 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- Node.js 要求：\>= 10\.13\.0
- 运行依赖：6 个
- peer 依赖：webpack ^4\.0\.0 \|\| ^5\.0\.0
- 首次发布：2023-03-16T16:21:50.683Z
- 最新版本发布：2023-03-16T16:44:35.194Z
- 近 30 天下载量：29341（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：2（近 12 个月 0 个）

## 中文简介

编制资产压缩版,以提供内容编码服务

## 安装

```sh
npm install @amoo-miki/compression-webpack-plugin
```

也可以使用：`pnpm add @amoo-miki/compression-webpack-plugin`、`yarn add @amoo-miki/compression-webpack-plugin`、`bun add @amoo-miki/compression-webpack-plugin`

## README

[![](https://webpack.js.org/assets/icon-square-big.svg)](https://github.com/webpack/webpack)

[![npm](https://img.shields.io/npm/v/compression-webpack-plugin.svg)](https://npmjs.com/package/compression-webpack-plugin) [![node](https://img.shields.io/node/v/compression-webpack-plugin.svg)](https://nodejs.org/) [![deps](https://david-dm.org/webpack-contrib/compression-webpack-plugin.svg)](https://david-dm.org/webpack-contrib/compression-webpack-plugin) [![tests](https://github.com/webpack-contrib/compression-webpack-plugin/workflows/compression-webpack-plugin/badge.svg)](https://github.com/webpack-contrib/compression-webpack-plugin/actions) [![cover](https://codecov.io/gh/webpack-contrib/compression-webpack-plugin/branch/master/graph/badge.svg)](https://codecov.io/gh/webpack-contrib/compression-webpack-plugin) [![chat](https://img.shields.io/badge/gitter-webpack%2Fwebpack-brightgreen.svg)](https://gitter.im/webpack/webpack) [![size](https://packagephobia.now.sh/badge?p=compression-webpack-plugin)](https://packagephobia.now.sh/result?p=compression-webpack-plugin)

# 压缩- webpack- 插件

编制资产压缩版本,以提供内容编码服务.

## 开始

开始,你需要安装 `compression-webpack-plugin`数字 :

```console
$ npm install compression-webpack-plugin --save-dev
```

然后将插件添加到您的 `webpack` 相会. 例如:

**网络包装. config.js**

```js
const CompressionPlugin = require('compression-webpack-plugin');

module.exports = {
  plugins: [new CompressionPlugin()],
};
```

跑开 `webpack` 通过你喜欢的方法.

## 选项

| 名称 | 类型 | 默认 | 说明 |
| :-: | :-: | :-: | :-- |
| **[`test`](https://npmcn.com/package/%40amoo-miki/compression-webpack-plugin/#readme-test)** | `{String|RegExp|Array<String|RegExp>}` | `undefined` | 包括所有通过测试断言的资产 |
| **[`include`](https://npmcn.com/package/%40amoo-miki/compression-webpack-plugin/#readme-include)** | `{String|RegExp|Array<String|RegExp>}` | `undefined` | 包含符合上述任何条件的所有资产 |
| **[`exclude`](https://npmcn.com/package/%40amoo-miki/compression-webpack-plugin/#readme-exclude)** | `{String|RegExp|Array<String|RegExp>}` | `undefined` | 不包括符合上述任何条件的所有资产 |
| **[`algorithm`](https://npmcn.com/package/%40amoo-miki/compression-webpack-plugin/#readme-algorithm)** | `{String|Function}` | `gzip` | 压缩算法/函数 |
| **[`compressionOptions`](https://npmcn.com/package/%40amoo-miki/compression-webpack-plugin/#readme-compressionoptions)** | `{Object}` | `{ level: 9 }` | 压缩选项 `algorithm` |
| **[`threshold`](https://npmcn.com/package/%40amoo-miki/compression-webpack-plugin/#readme-threshold)** | `{Number}` | `0` | 只处理大小大于此大小的资产( 以字节计) |
| **[`minRatio`](https://npmcn.com/package/%40amoo-miki/compression-webpack-plugin/#readme-minratio)** | `{Number}` | `0.8` | 只有压缩优于这一比率的资产才得到处理(`minRatio = Compressed Size / Original Size`(中文(简体) ) |
| **[`filename`](https://npmcn.com/package/%40amoo-miki/compression-webpack-plugin/#readme-filename)** | `{String|Function}` | `[path].gz[query]` | 目标资产文件名 . |
| **[`cache`](https://npmcn.com/package/%40amoo-miki/compression-webpack-plugin/#readme-cache)** | `{Boolean}` | `true` | 启用文件缓存 |

### `test`

类型 : `String|RegExp|Array<String|RegExp>` 默认 : `undefined`

包括所有通过测试断言的资产.

**网络包装. config.js**

```js
module.exports = {
  plugins: [
    new CompressionPlugin({
      test: /\.js(\?.*)?$/i,
    }),
  ],
};
```

### `include`

类型 : `String|RegExp|Array<String|RegExp>` 默认 : `undefined`

包括符合上述任何条件的所有资产.

**网络包装. config.js**

```js
module.exports = {
  plugins: [
    new CompressionPlugin({
      include: /\/includes/,
    }),
  ],
};
```

### `exclude`

类型 : `String|RegExp|Array<String|RegExp>` 默认 : `undefined`

不包括符合上述任何条件的所有资产.

**网络包装. config.js**

```js
module.exports = {
  plugins: [
    new CompressionPlugin({
      exclude: /\/excludes/,
    }),
  ],
};
```

### `algorithm`

类型 : `String|Function` 默认 : `gzip`

压缩算法/函数 .

#### `String`

算法从 [兹利布](https://nodejs.org/api/zlib.html)。 。 。 .

**网络包装. config.js**

```js
module.exports = {
  plugins: [
    new CompressionPlugin({
      algorithm: 'gzip',
    }),
  ],
};
```

#### `Function`

允许指定自定义压缩函数 .

**网络包装. config.js**

```js
module.exports = {
  plugins: [
    new CompressionPlugin({
      algorithm(input, compressionOptions, callback) {
        return compressionFunction(input, compressionOptions, callback);
      },
    }),
  ],
};
```

### `compressionOptions`

类型 : `Object` 默认 : `{ level: 9 }`

压缩选项 `algorithm`。 。 。 .

如果您使用自定义函数 `algorithm` 选项,默认值为 `{}`。 。 。 .

您可以在这里找到所有选项 [兹利布](https://nodejs.org/api/zlib.html#zlib_class_options)。 。 。 .

**网络包装. config.js**

```js
module.exports = {
  plugins: [
    new CompressionPlugin({
      compressionOptions: { level: 1 },
    }),
  ],
};
```

### `threshold`

类型 : `Number` 默认 : `0`

只处理规模大于此规模的资产. 以字节表示.

**网络包装. config.js**

```js
module.exports = {
  plugins: [
    new CompressionPlugin({
      threshold: 8192,
    }),
  ],
};
```

### `minRatio`

类型 : `Number` 默认 : `0.8`

只有压缩优于这一比率的资产才得到处理(`minRatio = Compressed Size / Original Size`) (中文(简体) ). 示例:你有 `image.png` 文件有1024b大小,文件的压缩版本有768b大小,所以 `minRatio` 等号 `0.75`。 。 。 . 换言之,资产将在 `Compressed Size / Original Size` 减值 `minRatio` 数值. 你用得着 `1` 用于处理小于原资产的价值。 使用数字值 。 MAXQSAFE INTEGER 处理所有资产, 即使它们比原始资产大( 当您为 AWS 预吞所有资产时有用)

**网络包装. config.js**

```js
module.exports = {
  plugins: [
    new CompressionPlugin({
      minRatio: 0.8,
    }),
  ],
};
```

### `filename`

类型 : `String|Function` 默认 : `[path].gz[query]`

目标资产文件名 .

#### `String`

`[file]` 替换为原始资产文件名. `[path]` 替换为原始资产的路径. `[dir]` 替换为原始资产的目录. `[name]` 替换为原始资产的文件名. `[ext]` 改为原始资产的扩展. `[query]` 改为查询.

**网络包装. config.js**

```js
module.exports = {
  plugins: [
    new CompressionPlugin({
      filename: '[path].gz[query]',
    }),
  ],
};
```

#### `Function`

**网络包装. config.js**

```js
module.exports = {
  plugins: [
    new CompressionPlugin({
      filename(info) {
        // info.file is the original asset filename
        // info.path is the path of the original asset
        // info.query is the query
        return `${info.path}.gz${info.query}`;
      },
    }),
  ],
};
```

### `deleteOriginalAssets`

类型 : `Boolean` 默认 : `false`

是否删除原始资产.

**网络包装. config.js**

```js
module.exports = {
  plugins: [
    new CompressionPlugin({
      deleteOriginalAssets: true,
    }),
  ],
};
```

### `cache`

> 在网络包装5中被忽略了! 请使用 [https://webpack.js.org/configulation/other-options/#cache 页面存档备份,存于互联网档案馆](https://webpack.js.org/configuration/other-options/#cache)。 。 。 .

类型 : `Boolean|String` 默认 : `true`

启用文件缓存 . 缓存目录的默认路径 : `node_modules/.cache/compression-webpack-plugin`。 。 。 .

#### `Boolean`

启用/ 禁用文件缓存 .

**网络包装. config.js**

```js
module.exports = {
  plugins: [
    new CompressionPlugin({
      cache: true,
    }),
  ],
};
```

#### `String`

启用文件缓存并设置缓存目录的路径 .

**网络包装. config.js**

```js
module.exports = {
  plugins: [
    new CompressionPlugin({
      cache: 'path/to/cache',
    }),
  ],
};
```

## 实例

### 使用 Zopfli

使用 `zopfli` 图书馆.

> i `@gfx/zopfli` 需要最小 `8` 版本 `node`。 。 。 .

开始,你需要安装 `@gfx/zopfli`数字 :

```console
$ npm install @gfx/zopfli --save-dev
```

**网络包装. config.js**

```js
const zopfli = require('@gfx/zopfli');

module.exports = {
  plugins: [
    new CompressionPlugin({
      compressionOptions: {
        numiterations: 15,
      },
      algorithm(input, compressionOptions, callback) {
        return zopfli.gzip(input, compressionOptions, callback);
      },
    }),
  ],
};
```

### 使用 Brotli 软件

[布罗特利](https://en.wikipedia.org/wiki/Brotli) 是一种由Google最初开发的压缩算法,提供比gzip优越的压缩.

节点10.1.6分,后来为 [本地支助](https://nodejs.org/api/zlib.html#zlib_zlib_createbrotlicompress_options) 在它的zlib模块中为Brotli压缩.

我们可以利用这种对布罗特利的内在支持 在Node 10.16.0 稍后,只是通过在适当的 `algorithm` 到压缩插件 :

**网络包装. config.js**

```js
const zlib = require('zlib');

module.exports = {
  plugins: [
    new CompressionPlugin({
      filename: '[path].br[query]',
      algorithm: 'brotliCompress',
      test: /\.(js|css|html|svg)$/,
      compressionOptions: {
        // zlib’s `level` option matches Brotli’s `BROTLI_PARAM_QUALITY` option.
        level: 11,
      },
      threshold: 10240,
      minRatio: 0.8,
      deleteOriginalAssets: false,
    }),
  ],
};
```

**说明** 这个 `level` 选项匹配 `BROTLI_PARAM_QUALITY` [用于基于 Brotli 的流](https://nodejs.org/api/zlib.html#zlib_for_brotli_based_streams)

### 用于不同算法的多个资产压缩版本

**网络包装. config.js**

```js
const zlib = require('zlib');

module.exports = {
  plugins: [
    new CompressionPlugin({
      filename: '[path].gz[query]',
      algorithm: 'gzip',
      test: /\.js$|\.css$|\.html$/,
      threshold: 10240,
      minRatio: 0.8,
    }),
    new CompressionPlugin({
      filename: '[path].br[query]',
      algorithm: 'brotliCompress',
      test: /\.(js|css|html|svg)$/,
      compressionOptions: {
        level: 11,
      },
      threshold: 10240,
      minRatio: 0.8,
    }),
  ],
};
```

## 捐款

请花点时间来读一下我们的贡献准则 如果你还没有这样做.

[捐款](https://npmcn.com/package/%40amoo-miki/compression-webpack-plugin/.github/CONTRIBUTING.md)

## 许可证

[麻省理工学院](https://npmcn.com/package/%40amoo-miki/compression-webpack-plugin/LICENSE)

## 常见问题

### @amoo-miki/compression-webpack-plugin 是什么？

编制资产压缩版,以提供内容编码服务

### 如何安装 @amoo-miki/compression-webpack-plugin？

在项目目录运行 npm install @amoo-miki/compression-webpack-plugin，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：webpack（^4\.0\.0 \|\| ^5\.0\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @amoo-miki/compression-webpack-plugin 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/amoo-miki\_\_compression-webpack-plugin 是否存在。

### @amoo-miki/compression-webpack-plugin 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @amoo-miki/compression-webpack-plugin 需要什么版本的 Node\.js？

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

### @amoo-miki/compression-webpack-plugin 可以商用吗？

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

### @amoo-miki/compression-webpack-plugin 的下载量有多少？

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

### @amoo-miki/compression-webpack-plugin 还在维护吗？

最新版本 4\.0\.1-rc\.1 发布于 2023/03/17（3 年前）；至今共发布 2 个版本，其中过去 12 个月发布了 0 个；首次发布于 2023/03/17。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

