Skip to content
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

[Bug]: Unable to bundle types from dependency while importing from root but works for sub-path modules #411

Open
Asuka109 opened this issue Nov 12, 2024 · 4 comments
Assignees
Labels
🐞 bug Something isn't working

Comments

@Asuka109
Copy link

Version

System:
    OS: macOS 15.0
    CPU: (10) arm64 Apple M1 Pro
    Memory: 151.06 MB / 32.00 GB
    Shell: 5.9 - /bin/zsh
  Browsers:
    Safari: 18.0
  npmPackages:
    @rslib/core: ^0.0.16 => 0.0.16

Details

There is a minimal repro slimmed from a package using Rsbuild.

src/index.ts

import type { RsbuildPluginAPI as Foo } from 'my-kit';
import type { RsbuildPluginAPI as Bar } from 'my-kit/plugin';

export type { Foo, Bar };

While all the things is actually exported from ./node_modules/my-kit/dist-types/types/plugin.d.ts.

node_modules/my-kit/dist-types
├── index.d.ts
└── types
    ├── index.d.ts
    └── plugin.d.ts

The weird thing is if I import types from my-kit (./node_modules/my-kit/dist-types/index.d.ts). It will come into being a relative path import statement from ./types (but there no dist/types/index.d.ts or somethings like it in there).

dist/index.d.ts (actual)

import { RsbuildPluginAPI as Foo } from './types';

export declare type Bar = {};

export { Foo }

export { }

But I expected it should be bundle into the dist/index.d.ts just like if I import the some type from the sub-path module my-kit/plugin (./node_modules/my-kit/dist-types/types/plugin.d.ts). It would be seems like:

dist/index.d.ts (expected)

export declare type Foo = {};

export declare type Bar = {};

export { Foo, Foo }

Reproduce link

https://github.com/Asuka109/repro-rslib-relative-path-typings

Reproduce Steps

  1. pnpm install
  2. pnpm build
@Timeless0911
Copy link
Contributor

Timeless0911 commented Nov 25, 2024

same as #470

If I write full index path like below, it work as expected.

- export type { RsbuildPluginAPI } from './types';

+ export type { RsbuildPluginAPI } from './types/index';

@Asuka109
Copy link
Author

It sounds like a ES Module limitation or something which won't resolve any directory as a module by appending ./index...

@fi3ework
Copy link
Member

type-fest is shipped in CJS mode, so api-extractor should follow Node.js resolution strategy, which should handles /index.

@Timeless0911
Copy link
Contributor

Tracking microsoft/rushstack#5018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐞 bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants