fix-dts-default-cjs-exports
v1.0.1
Published
Utility to fix TypeScript declarations when using default exports in CommonJS.
Readme
Fix TypeScript Declarations for default CJS exports
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 document for further details when using rollup-plugin-dts.
Features
- 🚀 Fix default exports in CommonJS modules via API or Rollup plugin
- ✨ Generate CommonJS
d.tsandd.ctsfiles fromd.mtsfiles - 💥 Use it with custom builders like unbuild, tsup or pkgroll (right now only
unbuildsupported,tsupandpkgrolldon't allow adding Rollup plugins)
unbuild
[!NOTE]
unbuild
v3.5.0uses 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 = trueoption, 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 option in the readme file.
You will need to remove its current internal plugin adding the one provided by this package:
// 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 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 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 © 2025-PRESENT Joaquín Sánchez
