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

Resolve dependencies of a package with a specific value #220

Open
paulobmarcos opened this issue Jul 20, 2023 · 0 comments
Open

Resolve dependencies of a package with a specific value #220

paulobmarcos opened this issue Jul 20, 2023 · 0 comments

Comments

@paulobmarcos
Copy link

paulobmarcos commented Jul 20, 2023

Hey @wclr!

Issue

Yalc by default resolves the workspace: protocol in dependencies.

That got me thinking if we couldn't also find a way to define how we want this dependency to actually be resolved.

I have a use case where it would be useful for a dependency to be resolved from workspace: to link: or a portal: instead of the actual package version.

The scenario is as follows:

  • packageA and packageB live in a yarn workspaces repository.
  • packageB has a workspace: protocol dependency on packageA.
  • I want to test packageB in an app repository.
  • I use yalc add packageA --pure to add packageA to the app repository.
  • I use yalc add packageB --link to add packageB to the app repository.
  • Both packageA and packageB will exist in the .yalc folder in the app repository.

The end result would, by default, resolve the workspace: to the actual version of packageA.

However if we try to yarn install the app, yarn will try to install packageB and it's dependencies - this will cause it to fail because it can't really resolve the packageA dependency version from nowhere.

Solution

What if we could specify a different way to resolve the workspace protocol?

In this case I would like for packageB to have a different protocol pointing the package locally in the .yalc folder, instead of workspace::

From:

/* .yalc/packageB/package.json */

"dependencies": {
   "packageA": "workspace:*"
}

To:

/* .yalc/packageB/package.json */

"dependencies": {
   "packageA": "link:../packageA"
}

Do you think there could be an option where we can define how to resolve the workspace: protocol in a more specific manner?


Portal instead of Link

What I would really like to use would be the portal: protocol instead of link:.
I have created a PR to accept a portal option while doing a yarn add: #219

However, I believe link is still good enough to describe the issue here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant