# DLL 插件

通过 `@kokojs/plugin-dll` 可以构建 DLL 文件，提升代码编译速度。

## 安装

```bash
yarn add @kokojs/plugin-dll --dev
```

## 配置项

### name

- Type: `string`
- Default: `undefined`

DLL 文件名称。

### include

- Type: `string[]`
- Default: `[]`

打包到 DLL 中的模块名称列表。

### cacheKey

- Type: `string`
- Default: `undefined`

缓存标识符，当缓存标识符未发生变化时，会跳过 DLL 的编译过程，直接复用上次编译结果。

通过执行 `npx koko clean` 可以清除缓存。

### prodCache

- Type: `boolean`
- Default: `false`

是否启用生产环境缓存。

未启用该选项时，缓存只会在 dev 模式下生效，启用后 prod 模式也会走缓存。使用该选项时，需要确保 cacheKey 能正确唯一标识 DLL 的内容。

## 示例

### 配置单个 DLL

在 `koko.config.js` 中添加如下配置：

```js
module.exports = {
  plugins: {
    dll: {
      name: 'common',
      include: ['@youzan/a', '@youzan/b'],
    },
  },
};
```

> Tips: 配置 DLL 后，需要在 HTML 中引入对应的 JS 文件。

### 配置多个 DLL

可以通过数组的形式配置多个 DLL，按照数组顺序进行构建。

```js
module.exports = {
  plugins: {
    dll: [
      {
        name: 'common',
        include: ['@youzan/a', '@youzan/b'],
      },
      {
        name: 'common2',
        include: ['@youzan/c', '@youzan/b'],
      },
    ],
  },
};
```

## DLL 依赖关系

当项目中有多个 DLL 时，会按照顺序依次打包，先打包的 DLL 作为后打包 DLL 的依赖。

## 维护者

陈嘉涵。
