unplugin-isolated-decl
⚡️ 一款用于生成孤立声明的极速工具。
特性
- 🚀 快速:生成
.d.ts
文件的速度显著快于tsc
。 - 🎨 转换器:支持 Oxc、SWC 和 TypeScript 转换器。
- 📦 零配置:无需配置,开箱即用。
- ✨ 打包工具支持:支持 Vite、Rollup、esbuild 和 Farm。(欢迎提交 Webpack/Rspack 支持的 PR)
安装
bash
# npm
npm i -D unplugin-isolated-decl
# jsr
npx jsr add -D @unplugin/isolated-decl
用法
Vite
ts
// vite.config.ts
import UnpluginIsolatedDecl from 'unplugin-isolated-decl/vite'
export default defineConfig({
plugins: [UnpluginIsolatedDecl()],
})
Rollup
ts
// rollup.config.js
import UnpluginIsolatedDecl from 'unplugin-isolated-decl/rollup'
export default {
plugins: [UnpluginIsolatedDecl()],
}
Rolldown
ts
// rolldown.config.js
import UnpluginIsolatedDecl from 'unplugin-isolated-decl/rolldown'
export default {
plugins: [UnpluginIsolatedDecl()],
}
esbuild
ts
// esbuild.config.js
import { build } from 'esbuild'
build({
plugins: [require('unplugin-isolated-decl/esbuild')()],
})
Farm
ts
// farm.config.ts
import UnpluginIsolatedDecl from 'unplugin-isolated-decl/farm'
export default defineConfig({
plugins: [UnpluginIsolatedDecl()],
})
选项
ts
export interface Options {
include?: FilterPattern
exclude?: FilterPattern
enforce?: 'pre' | 'post' | undefined
/**
* 你需要自行安装支持的转换器之一。
* oxc: @oxc/transformer
* swc: @swc/core
* typescript: typescript
*
* @default typescript
*/
transformer?: 'oxc' | 'swc' | 'typescript'
/**
* 是否生成声明源映射。
*
* 仅支持 `typescript` 和 `oxc` 转换器。
*
* @link https://www.typescriptlang.org/tsconfig/#declarationMap
*/
sourceMap?: boolean
/** 仅适用于 typescript 转换器 */
transformOptions?: TranspileOptions
ignoreErrors?: boolean
/** 输出文件的额外目录层级。 */
extraOutdir?: string
rewriteImports?: (
id: string,
importer: string,
) => string | void | null | undefined
}
rewriteImports
重写 .d.ts
文件中的导入。(esbuild 不支持)
以下是 Rollup 中重写导入的示例:
js
// rollup.config.js
import alias from '@rollup/plugin-alias'
export default {
// ...
plugins: [
alias({ entries: [{ find: '~', replacement: '.' }] }),
UnpluginIsolatedDecl({
rewriteImports(id, importer) {
if (id[0] === '~') return `.${id.slice(1)}`
},
}),
// ...
],
}
patchCjsDefaultExport
将 .d.cts
中的 export default
修补为 export =
Note
获取完整的选项集请查看 options