Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: add
realpath
to host to properly resolve monorepos
- tested this in a pnpm repo with symlinked deps and it worked there, so I believe this fixes all pnpm issues - it may also fix some Lerna issues if they were due to symlinks, but I didn't check those - not sure about others, e.g. Rush, Yarn workspaces, Yarn PnP - I figured out this was needed by staring at the TS source code and then I found this line: https://github.com/microsoft/TypeScript/blob/67673f324dd5f9398bb53fd16bf75efd155c32e7/src/compiler/moduleNameResolver.ts#L1412 - it expects `host.realpath` to be implemented for TS's `realPath` to work correctly, otherwise it just returns the path with no transformation (i.e. the path to the symlink instead of the realpath) - this is not documented _anywhere_ and we were hitting this when calling `getEmitOutput`, before even using `moduleNameResolver` - so I just tried implementing it... and it worked! - notably, the other Rollup TS plugins don't implement this either??? - not sure how they don't error on this?? - note that I added a `!` as `realpath` doesn't have to be implemented on `ts.sys`... but it is in the default implementation (see comment) - I originally had a ternary with `fs.realpathSync` if it didn't exist but that is literally what the default implementation uses - can add this back in the future if it becomes an issue
- Loading branch information