Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix(core): support subpath exports when constructing the project graph (
#29577) Sibling dependencies that rely exclusively on subpath exports are excluded from the dependency graph because there is no exact match. This adds a fallback to look for subpath exports if the exact match is not found. This also adds logic to respect conditional exports independent from subpath exports. <!-- Please make sure you have read the submission guidelines before posting an PR --> <!-- https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr --> <!-- Please make sure that your commit message follows our format --> <!-- Example: `fix(nx): must begin with lowercase` --> <!-- If this is a particularly complex change or feature addition, you can request a dedicated Nx release for this pull request branch. Mention someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they will confirm if the PR warrants its own release for testing purposes, and generate it for you if appropriate. --> ## Current Behavior Importing a workspace dependency via subpath export fails to match the package name, and so is not included in the dependency graph. ### Example ```apps/api/package.json``` ```json "name": "@my-org/api", "dependencies": { "@my-org/services": "workspace:*" } ``` ```libs/services/package.json``` ```json "name": "@my-org/services", "exports": { "./email": "./dist/email.js" } ``` The `@my-org/api` app should be able to import the email service with `import { EmailService } from "@my-org/services/email"`. However, the `getPackageEntryPointsToProjectMap` implementation results in an object with a key of `@my-org/services/email`, but not `@my-org/services`. This is not specifically a problem, except that `findDependencyInWorkspaceProjects` only considers exact matches within those object keys. ## Expected Behavior Importing a workspace dependency via subpath export should be included in the dependency graph. I also addressed a related issue where the following resulted in keys of `@my-org/services/default` and `@my-org/services/types`, which is incorrect according to the subpath/conditional export rules. ```json "exports": { "default": "./dist/index.js", "types": "./dist/index.d.ts" } ``` ## Related Issue(s) <!-- Please link the issue being fixed so it gets closed when this is merged. --> Fixes #29486 --------- Co-authored-by: Leosvel Pérez Espinosa <[email protected]>
- Loading branch information