egoist / egoist/tsup

`experimentalDts` generates broken type declarations.

Open
#1,050 9 comments 4 reactions 1 assignee Claimed by @ocavue View on GitHub
bug
Dominant language
TypeScript
Stars
11.3k
Forks
274
PR merge metrics
No merged PRs in 30d

Description

# Problem

When using `experimentalDts` in a with components in a subfolder the generated output points to files that don't exist.

## Version info
tsup 8.0.1
@microsoft/api-extractor 7.38.3

## Example

```js
// input files
./src
components/
ComponentA/
index.tsx

// tsup config
export default defineConfig({
target: 'esnext',
platform: 'neutral',
format: 'esm',
experimentalDts: true,
entry: [ "./src/components/ComponentA.tsx" ]
});

// output files (Note how the components/ folder does not exist in dist)
./dist
ComponentA/
index.tsx
_tsup-dts-rollup.d.ts
```

Now when looking into the `dist/_tsup-dts-rollup.d.ts` file it contains references to `./components/ComponentA` resulting in broken typings.

## Proposed fix

The generated paths in `dist/_tsup-dts-rollup.d.ts` somehow reference nonexisting files when the entry code is in a subdirectory, so the fix would probably have to check the actual location of the output file and reference that instead.

## Other feedback

@ocavue
I originally tried out the `experimentalDts` option because I am building a number of entries (20+) and the dts build is very slow (~30 seconds). With the new experimentalDts option this time went down to ~7 seconds. Thanks for that great speed improvement. So it would be very nice to use if the generated paths were correct.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.