Skip to content

插件

tsdownRolldown 作为核心引擎,因此可以无缝支持 Rolldown 插件。插件是一种强大的扩展方式,可以自定义打包流程,实现代码转换、资源处理等功能。

支持的插件生态

Rolldown 插件

由于 tsdown 基于 Rolldown 构建,因此支持所有 Rolldown 插件。您可以使用任何为 Rolldown 设计的插件来增强构建流程。

Unplugin

Unplugin 是一个现代化的插件框架,支持包括 Rolldown 在内的多种打包器。大多数 Unplugin 插件(通常以 unplugin- 为前缀命名)都可以与 tsdown 无缝配合使用。

Rollup 插件

Rolldown 与 Rollup 的插件 API 高度兼容,因此 tsdown 可以直接使用大多数 Rollup 插件。这让您能够利用 Rollup 生态中丰富的现有插件资源。

类型兼容性

由于 Rollup 和 Rolldown 的插件 API 并非 100% 兼容,Rollup 插件有时可能会导致 TypeScript 类型报错。如果您在使用 Rollup 插件时遇到类型错误,可以通过 // @ts-expect-error 或将插件强制转换为 any 来忽略这些错误:

ts
import SomeRollupPlugin from 'some-rollup-plugin'
export default defineConfig({
  plugins: [SomeRollupPlugin() as any],
})

Vite 插件

如果 Vite 插件不依赖于 Vite 特定的内部 API 或行为,它们可能可以与 tsdown 一起使用。但如果插件严重依赖 Vite 内部机制,则可能不兼容。我们计划未来进一步完善对 Vite 插件的支持。

类型兼容性

同样,Vite 插件也可能因 API 差异导致类型错误。如有需要,您可以使用 // @ts-expect-erroras any 来屏蔽这些类型报错。

如何使用插件

要在 tsdown 中使用插件,需将其添加到配置文件的 plugins 数组中。插件不能通过 CLI 添加。

以下是插件使用示例:

tsdown.config.ts
ts
import SomePlugin from 'some-plugin'
import { defineConfig } from 'tsdown'

export default defineConfig({
  plugins: [SomePlugin()],
})

具体插件的用法请参考插件自身的文档。

编写自定义插件

如果您想为 tsdown 创建自定义插件,可以参考 Rolldown 的插件开发指南。Rolldown 的插件 API 高度灵活,与 Rollup 的 API 类似,便于快速上手。

详细说明请参阅 Rolldown 插件开发指南

TIP

插件是扩展 tsdown 功能的绝佳方式。无论是使用现有插件还是自定义插件,都可以让您的打包流程更好地适应项目需求。

Released under the MIT License.