Skip to content

Individually exported types are not included in the build, even if they're referenced/exported by an entry point #889

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
carpeliam opened this issue Sep 4, 2021 · 3 comments

Comments

@carpeliam
Copy link

I have a TypeScript package with a number of types in different files underneath a src/resources directory. Though these files and their types are alternately imported and/or exported from src/index.ts (which is my entry point/source within package.json), many of them are excluded, unless I export * all the way down.

Just from experimenting, it looks like:

  • types that are exported via export * from './location' from the entry point are included in the build, but types that are exported via export { Type } from './location' are not
  • this is true recursively as well: if the entry point includes export * from './location' and ./location/index.ts includes export { Type } from './type', a d.ts file will be created at ./dist/location/index.d.ts that references a non-existent ./dist/location/type.d.ts

Expected behavior: if I export { Type } from './location' from an entry point, then './dist/location.d.ts is created/built, ideally with only the types or other resources that have been exported or depended on from the entry point.

Workaround: run tsc src/index.ts --outDir dist --declaration --emitDeclarationOnly --esModuleInterop AFTER running microbundle to create ALL types referenced by entry point. This doesn't prune unused types, but it's a start!

Small sample to reproduce: https://github.com/carpeliam/microbundle-where-are-my-types

I'm hoping this is just user error, please let me know if I have a problem in my package.json or tsconfig.json or if this isn't a use case that microbundle is focusing on. Thanks all for building a sweet bundler!

@illumincrotty
Copy link

This is a pretty common problem (see #868 #855), the cause/solution is here. You need to add an include section to your tsconfig as shown below

file: tsconfig.json
{
    "compilerOptions": { ... },
    "include": ["src/**/*"]
}

@carpeliam
Copy link
Author

Thank you! I searched for issues but somehow missed these.

@agilgur5
Copy link
Contributor

agilgur5 commented Sep 17, 2022

Thought I'd update here that I fixed the root cause upstream in ezolenko/rollup-plugin-typescript2#406, which was released in rpt2 0.34.0.

The tsconfig include workaround should no longer be necessary, and one can now use tsconfig files instead.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants