angular/packages/compiler-cli/ngcc/test
Pete Bacon Darwin 995cd15a69 fix(ngcc): correctly identify the package path of secondary entry-points (#36249)
Previously we only searched for package paths below the set of `basePaths`
that were computed from the `basePath` provided to ngcc and the set of
`pathMappings`.

In some scenarios, such as hoisted packages, the entry-point is not within
any of the `basePaths` identified above. For example:

```
project
  packages
    app
      node_modules
        app-lib (depends on lib1)
  node_modules
    lib1 (depends on lib2)
      node_modules
        lib2 (depends on lib3/entry-point)
    lib3
      entry-point
```

When CLI is compiling `app-lib` ngcc will be given
`project/packages/app/node_modules` as the `basePath.

If ngcc is asked to target `lib2`, the `targetPath` will be
`project/node_modules/lib1/node_modules/lib2`.

Since `lib2` depends upon `lib3/entry-point`, ngcc will need to compute
the package path for `project/node_modules/lib3/entry-point`.

Since `project/node_modules/lib3/entry-point` is not contained in the `basePath`
`project/packages/app/node_modules`, ngcc failed to compute the `packagePath`
correctly, instead assuming that it was the same as the entry-point path.

Now we also consider the nearest `node_modules` folder to the entry-point
path as an additional `basePath`. If one is found then we use the first
directory directly below that `node_modules` directory as the package path.

In the case of our example this extra `basePath` would be `project/node_modules`
which allows us to compute the `packagePath` of `project/node_modules/lib3`.

Fixes #35747

PR Close #36249
2020-03-27 11:17:45 -07:00
..
analysis fix(ngcc): do not attempt compilation when analysis fails (#34889) 2020-01-23 14:47:03 -08:00
dependencies fix(ngcc): allow deep-import warnings to be ignored (#35683) 2020-02-27 10:48:48 -08:00
entry_point_finder fix(ngcc): correctly identify the package path of secondary entry-points (#36249) 2020-03-27 11:17:45 -07:00
execution fix(ngcc): do not crash on entry-point that fails to compile (#36083) 2020-03-18 15:56:21 -07:00
helpers refactor(ngcc): move locking code into its own folder (#35861) 2020-03-05 18:17:15 -05:00
host fix(ngcc): consistently delegate to TypeScript host for typing files (#36089) 2020-03-17 13:34:04 -07:00
integration fix(ngcc): use preserve whitespaces from tsconfig if provided (#36189) 2020-03-24 14:25:06 -07:00
locking refactor(ngcc): remove unused LockFileWithSignalHandlers (#35938) 2020-03-12 09:46:18 -07:00
logging refactor(ngcc): expose logging level on the logger (#35861) 2020-03-05 18:17:15 -05:00
migrations feat(ivy): error in ivy when inheriting a ctor from an undecorated base (#34460) 2019-12-18 15:04:49 -08:00
packages refactor(ngcc): add entry-point manifest functionality (#35931) 2020-03-11 15:01:59 -07:00
rendering feat(compiler): add dependency info and ng-content selectors to metadata (#35695) 2020-03-24 14:21:42 -07:00
sourcemaps perf(ngcc): store the position of SegmentMarkers to avoid unnecessary computation (#36027) 2020-03-13 08:00:29 -07:00
writing fix(ngcc): do not crash on overlapping entry-points (#36083) 2020-03-18 15:56:21 -07:00
BUILD.bazel feat(ngcc): implement source-map flattening (#35132) 2020-02-26 12:51:35 -08:00
utils_spec.ts fix(ngcc): correctly detect emitted TS helpers in ES5 (#35191) 2020-02-21 09:06:46 -08:00