Skip to content
99
4

unplugin-isolated-decl npm jsr

Unit Test

⚡️ 一款用于生成孤立声明的极速工具。

特性

  • 🚀 快速:生成 .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

赞助商

许可证

MIT 许可证 © 2024-PRESENT 三咲智子

Released under the MIT License.