# fix-dts-default-cjs-exports

> Utility to fix TypeScript declarations when using default exports in CommonJS.

Latest version **1.0.1** (published 2025-03-18) · MIT license · 0 weekly downloads

## Install

```sh
npm install fix-dts-default-cjs-exports
pnpm add fix-dts-default-cjs-exports
yarn add fix-dts-default-cjs-exports
bun add fix-dts-default-cjs-exports
```

## Health

**Score 40/100 (D)** — status: maintenance-mode.

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads.

Negative: stale; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.1 |
| Published | 2025-03-18 |
| First published | 2025-02-23 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 3 |
| Unpacked size | 42.2 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 15 |
| Author | userquin |
| Maintainers | danielroe, userquin |
| Keywords | rollup, cjs, typescript, default exports |

## Links

- npm: https://www.npmjs.com/package/fix-dts-default-cjs-exports
- Repository: https://github.com/userquin/fix-dts-default-cjs-exports
- Homepage: https://github.com/userquin/fix-dts-default-cjs-exports#readme
- Issues: https://github.com/userquin/fix-dts-default-cjs-exports/issues
- npm.io page: https://npm.io/package/fix-dts-default-cjs-exports

## Dependencies (3)

- [mlly](https://npm.io/package/mlly.md) ^1.7.4
- [rollup](https://npm.io/package/rollup.md) ^4.34.8
- [magic-string](https://npm.io/package/magic-string.md) ^0.30.17

## Alternatives

- [@openai/codex-sdk](https://npm.io/package/@openai/codex-sdk.md) — 731.4K weekly downloads
- [babel-plugin-transform-react-jsx](https://npm.io/package/babel-plugin-transform-react-jsx.md) — 565.0K weekly downloads
- [babel-helper-remove-or-void](https://npm.io/package/babel-helper-remove-or-void.md) — 508.5K weekly downloads
- [@pnpm/store-controller-types](https://npm.io/package/@pnpm/store-controller-types.md) — 186.9K weekly downloads
- [react-native-signature-canvas](https://npm.io/package/react-native-signature-canvas.md) — 155.6K weekly downloads

## Recent versions

- 1.0.1 (latest) — 2025-03-18
- 1.0.0 — 2025-02-26
- 0.0.1 — 2025-02-23

## README

# Fix TypeScript Declarations for default CJS exports

[![npm version][npm-version-src]][npm-version-href]
[![npm downloads][npm-downloads-src]][npm-downloads-href]
[![License][license-src]][license-href]

This utility will allow you to fix the TypeScript declaration in CommonJS modules when using default exports.

Check the CJS fixtures in the test folder and the [CJS](./CJS.md) document for further details when using `rollup-plugin-dts`.

## Features

- 🚀 Fix default exports in CommonJS modules via API or Rollup plugin
- ✨ Generate CommonJS `d.ts` and `d.cts` files from `d.mts` files
- 💥 Use it with custom builders like [unbuild](https://github.com/unjs/unbuild), [tsup](https://github.com/egoist/tsup) or [pkgroll](https://github.com/privatenumber/pkgroll) (right now only `unbuild` supported, `tsup` and `pkgroll` don't allow adding Rollup plugins)

## unbuild

> [!NOTE]
>
> [unbuild](https://github.com/unjs/unbuild) `v3.5.0` uses the Rollup plugin from this package to fix the default exports in CommonJS modules.

For older `unbuild` versions, you can add the Rollup plugin from this package using the `rollup:dts:options` hook.

> [!WARNING]
>
> You should register the plugin directly when enabling `rollup.emitCJS = true` option, otherwise you can get wrong transformations.
>
> The plugin exposed here is just a helper to fix the default exports in CommonJS modules, it cannot control what files are being generated, check the [declaration](https://github.com/unjs/unbuild?tab=readme-ov-file#configuration) option in the readme file.

You will need to remove its current internal plugin adding the one provided by this package:
```ts
// build.config.ts
import { FixDtsDefaultCjsExportsPlugin } from 'fix-dts-default-cjs-exports/rollup'
import { defineBuildConfig } from 'unbuild'

export default defineBuildConfig({
  entries: ['<your-entry-points>'],
  declaration: true,
  clean: true,
  rollup: { emitCJS: true },
  hooks: {
    'rollup:dts:options': (ctx, options) => {
      /* uncomment this block if you want to remove the unbuild internal plugin
      options.plugins = plugins.filter((p) => {
        if (!p || typeof p === 'string' || Array.isArray(p) || !('name' in p))
          return true

        return p.name !== 'unbuild-fix-cjs-export-type'
      })
      */
      options.plugins.push(FixDtsDefaultCjsExportsPlugin({
        warn: message => ctx.warnings.add(message)
      }))
    }
  }
})
```

## tsup

Since [tsup](https://github.com/egoist/tsup) doesn't expose any hook to allow change internal configuration, we need a change in the package to include the Rollup plugin from this package instead its built-in one.

## pkgroll

[pkgroll](https://github.com/privatenumber/pkgroll) is exposing only the `cli`, we need a change in the package to include the Rollup plugin from this package instead its built-in one.

## License

[MIT](./LICENSE) License © 2025-PRESENT [Joaquín Sánchez](https://github.com/userquin)

<!-- Badges -->

[npm-version-src]: https://img.shields.io/npm/v/fix-dts-default-cjs-exports?style=flat&colorA=18181B&colorB=F0DB4F
[npm-version-href]: https://npmjs.com/package/fix-dts-default-cjs-exports
[npm-downloads-src]: https://img.shields.io/npm/dm/fix-dts-default-cjs-exports?style=flat&colorA=18181B&colorB=F0DB4F
[npm-downloads-href]: https://npmjs.com/package/fix-dts-default-cjs-exports
[license-src]: https://img.shields.io/github/license/userquin/fix-dts-default-cjs-exports.svg?style=flat&colorA=18181B&colorB=F0DB4F
[license-href]: https://github.com/userquin/fix-dts-default-cjs-exports/blob/main/LICENSE

---
_Source: https://npm.io/package/fix-dts-default-cjs-exports · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
