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

Path dependencies #7

Open
LPGhatguy opened this issue Mar 15, 2021 · 2 comments · May be fixed by #88
Open

Path dependencies #7

LPGhatguy opened this issue Mar 15, 2021 · 2 comments · May be fixed by #88
Labels
essential feature A feature essential to wally supporting all typical use cases. All must be closed before 1.0.0.

Comments

@LPGhatguy
Copy link
Contributor

When working on multiple packages at the same time, it's very useful to have a package manager that can set up symlinks between packages.

For implementing path dependencies, we'll want to choose between symlinks and Rojo project composition.

Symlinks

We can create symlinks to point to any referenced path dependencies.

Pros:

  • Should appear the same as a regular installation to most tools.

Cons:

  • Windows users need to enable symlinks, like via Developer Mode or as an optional feature in some installers like Python's.
  • Rojo has known bugs when interacting with symlinks that are hard to solve.

Rojo Project Composition

We can take advantage of Rojo's ability to compose project files together by generating small Rojo project files that point to the actual contents of the package.

Pros:

  • Works on any system without extra configuration.

Cons:

  • Rojo specific! Other tools may not understand this pattern.
@LPGhatguy LPGhatguy transferred this issue from another repository Jul 26, 2021
@u-train u-train linked a pull request Jun 15, 2022 that will close this issue
@OverHash
Copy link

What format should be used to specify path dependencies in the manifest? Options like Cargo's

[dependencies]
Roact = { path = "../Roact", version = "1.2.0" }

or npm's

{
    "dependencies": {
        "Roact": "file:../Roact"
    }
}

are the most prominent ways I can think of.

Personally, I think the way Cargo does it is better. Using the explicit inner struct makes it clear that it's a path dependency, which separates it from the "special string" format that npm uses.
I'm unsure what benefits are derived from specifying the version field of a path dependency, perhaps that should also be up for discussion.

@u-train
Copy link
Contributor

u-train commented Mar 6, 2023

The version field provides a fallback if the path doesn't exist, and allows one to upload to the registry (using the version specified from the registry instead of the path).

@magnalite magnalite added the essential feature A feature essential to wally supporting all typical use cases. All must be closed before 1.0.0. label Jun 13, 2023
@magnalite magnalite added this to the Essential feature complete milestone Jun 13, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
essential feature A feature essential to wally supporting all typical use cases. All must be closed before 1.0.0.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants