Add support for scoped packages within monorepos #56
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This change fixes how NPM dependencies are determined within a monorepo. At the moment, a scoped package will fail to be associated with the correct package when that dependency is not defined at the root of the workspace.
The reason for this is within the
isNpmDependency
method, we would interrogate the package name by splitting the package on/
, and evaluate only the first slice. This is deal for packages likelodash
which export multiple subpackages(?), however, this is not ideal for scoped packages (such as@emotion/react
), as there is no@emotion
package defined in package.json.This behavior would implicitly work for workspaces where the dependency was defined at the a root
package.json
, since theisNpmPackage
would fall through to its default return, which wouldn't include thenpmLabel
(the package name). However, this doesn't work in typical monorepos where dependencies are defined in projects further up from root.The solution introduced is straightforward, to simply evaluate the original import statement if the evaluation of the first slice has fallen through. We perform this for both
dependencies
anddevDependencies
.