A blazing-fast tool for generating isolated declarations.
npm install unplugin-isolated-decl[![npm version][npm-version-src]][npm-version-href]
[![npm downloads][npm-downloads-src]][npm-downloads-href]
[![JSR][jsr-src]][jsr-href]
[![Unit Test][unit-test-src]][unit-test-href]
⚡️ A blazing-fast tool for generating isolated declarations.
- 🚀 Fast: Generates .d.ts files significantly faster than tsc.
- 🎨 Transformer: Support Oxc, SWC, and TypeScript transformer.
- 📦 Zero Config: No configuration required, works out of the box.
- ✨ Bundler Support: Works with Vite, Rollup, esbuild and Farm.
> [!TIP]
> For Rolldown users, you can use the rolldown-plugin-dts for a more powerful and flexible solution.
``bashnpm
npm i -D unplugin-isolated-decl
Usage
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()],
})
`
Options
`ts
export interface Options {
include?: FilterPattern
exclude?: FilterPattern
enforce?: 'pre' | 'post' | undefined
/**
* You should install the transformer manually if you are not using oxc.
* swc: @swc/core
* typescript: typescript
*
* @default oxc
*/
transformer?: 'oxc' | 'swc' | 'typescript'
/**
* Whether to generate declaration source maps.
*
* Supported by typescript and oxc transformer only.
*
* @link https://www.typescriptlang.org/tsconfig/#declarationMap
*/
sourceMap?: boolean transformOptions?: TranspileOptions
ignoreErrors?: boolean
/* An extra directory layer for output files. /
extraOutdir?: string
rewriteImports?: (
id: string,
importer: string,
) => string | void | null | undefined
}
`$3
Rewrite imports in
.d.ts files. (esbuild support is not available)Here is an example of rewriting imports on 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)}
},
}),
// ...
],
}
`$3
Patch
export default in .d.cts to export =`---
> [!NOTE]
> For the exhaustive set of options check options
MIT License © 2024-PRESENT Kevin Deng
[npm-version-src]: https://img.shields.io/npm/v/unplugin-isolated-decl.svg
[npm-version-href]: https://npmjs.com/package/unplugin-isolated-decl
[npm-downloads-src]: https://img.shields.io/npm/dm/unplugin-isolated-decl
[npm-downloads-href]: https://www.npmcharts.com/compare/unplugin-isolated-decl?interval=30
[jsr-src]: https://jsr.io/badges/@unplugin/isolated-decl
[jsr-href]: https://jsr.io/@unplugin/isolated-decl
[unit-test-src]: https://github.com/unplugin/unplugin-isolated-decl/actions/workflows/unit-test.yml/badge.svg
[unit-test-href]: https://github.com/unplugin/unplugin-isolated-decl/actions/workflows/unit-test.yml