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

fix: resolve modules if folder contains a package.json file #187

Merged
merged 4 commits into from
Oct 20, 2022

Conversation

sanderson-ut
Copy link
Contributor

@sanderson-ut sanderson-ut commented Sep 28, 2022

getMappedPath resolves files by trying a number of different file extensions and filtering out those that aren't a file. This does not work when a TSConfig path alias resolves to a directory containing built assets, and described by a package.json, e.g. @foo/bar -> node_modules/foo/bar/dist.

If the tsconfig path is mapped to a folder that doesn't contain an index.${ext} file, then getMappedPath returns undefined as the folder itself is not a file. However, in some cases it is ok for this to resolve to the directory as the package.json contains a typings entry that references a .d.ts file, which is correctly handled by enhanced-resolve.

#188

getMappedPath only resolves to files that exist. This does not
work when a TSConfig path alias resolves to a module folder
containing built assets, and described by a package.json, e.g.
foo/dist.

If the tsconfig path is mapped to a folder, then getMappedPath
returns undefined as the folder is not a file. However, in somes
cases it is ok for this to resolve as the package.json contains
a `typings` entry that references a .d.ts file, which is
correctly handled by enhanced-resolve
@changeset-bot
Copy link

changeset-bot bot commented Sep 28, 2022

🦋 Changeset detected

Latest commit: 27b4ce8

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
eslint-import-resolver-typescript Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@codesandbox-ci
Copy link

codesandbox-ci bot commented Sep 28, 2022

This pull request is automatically built and testable in CodeSandbox.

To see build info of the built libraries, click here or the icon next to each commit SHA.

src/index.ts Outdated Show resolved Hide resolved
@JounQin JounQin marked this pull request as ready for review October 11, 2022 02:32
Use `path.sep` as the file separator instead of `/` so that this
works on both Windows and Unix.

Rename input parameter from `path` to `modulePath` so that it
doesn't override `node:path`
src/index.ts Outdated Show resolved Hide resolved
Co-authored-by: JounQin <admin@1stg.me>
@JounQin JounQin merged commit 7a91daf into import-js:master Oct 20, 2022
@JounQin
Copy link
Collaborator

JounQin commented Oct 20, 2022

@scott-ut Thanks for your contribution!

@sanderson-ut sanderson-ut deleted the support-modules-in-paths branch October 20, 2022 12:00
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request Aug 15, 2024
| datasource | package                           | from  | to    |
| ---------- | --------------------------------- | ----- | ----- |
| npm        | eslint-import-resolver-typescript | 3.5.1 | 3.6.1 |


##### [\`v3.6.1\`](https://github.com/import-js/eslint-import-resolver-typescript/blob/HEAD/CHANGELOG.md#361)

##### Patch Changes

-   [#241](import-js/eslint-import-resolver-typescript#241) [`cf5d67f`](import-js/eslint-import-resolver-typescript@cf5d67f) Thanks [@klippx](https://github.com/klippx)! - Fix CJS import to make it compatible with ESM projects
##### [\`v3.6.0\`](https://github.com/import-js/eslint-import-resolver-typescript/blob/HEAD/CHANGELOG.md#360)

##### Minor Changes

-   [#235](import-js/eslint-import-resolver-typescript#235) [`b5ea367`](import-js/eslint-import-resolver-typescript@b5ea367) Thanks [@SukkaW](https://github.com/SukkaW)! - refactor: drop `globby` and `synckit`
##### [\`v3.5.5\`](https://github.com/import-js/eslint-import-resolver-typescript/blob/HEAD/CHANGELOG.md#355)

##### Patch Changes

-   [`84b0649`](import-js/eslint-import-resolver-typescript@84b0649) Thanks [@JounQin](https://github.com/JounQin)! - fix: mark eslint-module-utils as dep
##### [\`v3.5.4\`](https://github.com/import-js/eslint-import-resolver-typescript/blob/HEAD/CHANGELOG.md#354)

##### Patch Changes

-   [`25f3920`](import-js/eslint-import-resolver-typescript@25f3920) Thanks [@JounQin](https://github.com/JounQin)! - fix: enhanced-resolve is commonjs only - close [#213](import-js/eslint-import-resolver-typescript#213)

-   [#219](import-js/eslint-import-resolver-typescript#219) [`0bf6ffb`](import-js/eslint-import-resolver-typescript@0bf6ffb) Thanks [@lsmurray](https://github.com/lsmurray)! - fix: check if cwd changed to bust mapper cache
##### [\`v3.5.3\`](https://github.com/import-js/eslint-import-resolver-typescript/blob/HEAD/CHANGELOG.md#353)

##### Patch Changes

-   [#206](import-js/eslint-import-resolver-typescript#206) [`6531bad`](import-js/eslint-import-resolver-typescript@6531bad) Thanks [@marvinhagemeister](https://github.com/marvinhagemeister)! - Only try to resolve a module directory when we know that the path is a directory. This can lead to a 15% speedup on projects with many files.
##### [\`v3.5.2\`](https://github.com/import-js/eslint-import-resolver-typescript/blob/HEAD/CHANGELOG.md#352)

##### Patch Changes

-   [#193](import-js/eslint-import-resolver-typescript#193) [`8756a26`](import-js/eslint-import-resolver-typescript@8756a26) Thanks [@Rialgar](https://github.com/Rialgar)! - chore(package): remove node 12 from engines field

-   [#187](import-js/eslint-import-resolver-typescript#187) [`7a91daf`](import-js/eslint-import-resolver-typescript@7a91daf) Thanks [@scott-ut](https://github.com/scott-ut)! - fix: resolve modules if folder contains a package.json file
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request Aug 15, 2024
| datasource | package                           | from  | to    |
| ---------- | --------------------------------- | ----- | ----- |
| npm        | eslint-import-resolver-typescript | 3.5.1 | 3.6.1 |


##### [\`v3.6.1\`](https://github.com/import-js/eslint-import-resolver-typescript/blob/HEAD/CHANGELOG.md#361)

##### Patch Changes

-   [#241](import-js/eslint-import-resolver-typescript#241) [`cf5d67f`](import-js/eslint-import-resolver-typescript@cf5d67f) Thanks [@klippx](https://github.com/klippx)! - Fix CJS import to make it compatible with ESM projects
##### [\`v3.6.0\`](https://github.com/import-js/eslint-import-resolver-typescript/blob/HEAD/CHANGELOG.md#360)

##### Minor Changes

-   [#235](import-js/eslint-import-resolver-typescript#235) [`b5ea367`](import-js/eslint-import-resolver-typescript@b5ea367) Thanks [@SukkaW](https://github.com/SukkaW)! - refactor: drop `globby` and `synckit`
##### [\`v3.5.5\`](https://github.com/import-js/eslint-import-resolver-typescript/blob/HEAD/CHANGELOG.md#355)

##### Patch Changes

-   [`84b0649`](import-js/eslint-import-resolver-typescript@84b0649) Thanks [@JounQin](https://github.com/JounQin)! - fix: mark eslint-module-utils as dep
##### [\`v3.5.4\`](https://github.com/import-js/eslint-import-resolver-typescript/blob/HEAD/CHANGELOG.md#354)

##### Patch Changes

-   [`25f3920`](import-js/eslint-import-resolver-typescript@25f3920) Thanks [@JounQin](https://github.com/JounQin)! - fix: enhanced-resolve is commonjs only - close [#213](import-js/eslint-import-resolver-typescript#213)

-   [#219](import-js/eslint-import-resolver-typescript#219) [`0bf6ffb`](import-js/eslint-import-resolver-typescript@0bf6ffb) Thanks [@lsmurray](https://github.com/lsmurray)! - fix: check if cwd changed to bust mapper cache
##### [\`v3.5.3\`](https://github.com/import-js/eslint-import-resolver-typescript/blob/HEAD/CHANGELOG.md#353)

##### Patch Changes

-   [#206](import-js/eslint-import-resolver-typescript#206) [`6531bad`](import-js/eslint-import-resolver-typescript@6531bad) Thanks [@marvinhagemeister](https://github.com/marvinhagemeister)! - Only try to resolve a module directory when we know that the path is a directory. This can lead to a 15% speedup on projects with many files.
##### [\`v3.5.2\`](https://github.com/import-js/eslint-import-resolver-typescript/blob/HEAD/CHANGELOG.md#352)

##### Patch Changes

-   [#193](import-js/eslint-import-resolver-typescript#193) [`8756a26`](import-js/eslint-import-resolver-typescript@8756a26) Thanks [@Rialgar](https://github.com/Rialgar)! - chore(package): remove node 12 from engines field

-   [#187](import-js/eslint-import-resolver-typescript#187) [`7a91daf`](import-js/eslint-import-resolver-typescript@7a91daf) Thanks [@scott-ut](https://github.com/scott-ut)! - fix: resolve modules if folder contains a package.json file
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request Aug 15, 2024
| datasource | package                           | from  | to    |
| ---------- | --------------------------------- | ----- | ----- |
| npm        | eslint-import-resolver-typescript | 3.5.1 | 3.6.1 |


## [v3.6.1](https://github.com/import-js/eslint-import-resolver-typescript/blob/HEAD/CHANGELOG.md#361)

##### Patch Changes

-   [#241](import-js/eslint-import-resolver-typescript#241) [`cf5d67f`](import-js/eslint-import-resolver-typescript@cf5d67f) Thanks [@klippx](https://github.com/klippx)! - Fix CJS import to make it compatible with ESM projects


## [v3.6.0](https://github.com/import-js/eslint-import-resolver-typescript/blob/HEAD/CHANGELOG.md#360)

##### Minor Changes

-   [#235](import-js/eslint-import-resolver-typescript#235) [`b5ea367`](import-js/eslint-import-resolver-typescript@b5ea367) Thanks [@SukkaW](https://github.com/SukkaW)! - refactor: drop `globby` and `synckit`


## [v3.5.5](https://github.com/import-js/eslint-import-resolver-typescript/blob/HEAD/CHANGELOG.md#355)

##### Patch Changes

-   [`84b0649`](import-js/eslint-import-resolver-typescript@84b0649) Thanks [@JounQin](https://github.com/JounQin)! - fix: mark eslint-module-utils as dep


## [v3.5.4](https://github.com/import-js/eslint-import-resolver-typescript/blob/HEAD/CHANGELOG.md#354)

##### Patch Changes

-   [`25f3920`](import-js/eslint-import-resolver-typescript@25f3920) Thanks [@JounQin](https://github.com/JounQin)! - fix: enhanced-resolve is commonjs only - close [#213](import-js/eslint-import-resolver-typescript#213)

-   [#219](import-js/eslint-import-resolver-typescript#219) [`0bf6ffb`](import-js/eslint-import-resolver-typescript@0bf6ffb) Thanks [@lsmurray](https://github.com/lsmurray)! - fix: check if cwd changed to bust mapper cache


## [v3.5.3](https://github.com/import-js/eslint-import-resolver-typescript/blob/HEAD/CHANGELOG.md#353)

##### Patch Changes

-   [#206](import-js/eslint-import-resolver-typescript#206) [`6531bad`](import-js/eslint-import-resolver-typescript@6531bad) Thanks [@marvinhagemeister](https://github.com/marvinhagemeister)! - Only try to resolve a module directory when we know that the path is a directory. This can lead to a 15% speedup on projects with many files.


## [v3.5.2](https://github.com/import-js/eslint-import-resolver-typescript/blob/HEAD/CHANGELOG.md#352)

##### Patch Changes

-   [#193](import-js/eslint-import-resolver-typescript#193) [`8756a26`](import-js/eslint-import-resolver-typescript@8756a26) Thanks [@Rialgar](https://github.com/Rialgar)! - chore(package): remove node 12 from engines field

-   [#187](import-js/eslint-import-resolver-typescript#187) [`7a91daf`](import-js/eslint-import-resolver-typescript@7a91daf) Thanks [@scott-ut](https://github.com/scott-ut)! - fix: resolve modules if folder contains a package.json file
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

2 participants