vrchat-community / creator-companion

The Entry Point for Making Things in VRChat
https://vrchat.com/home/download
60 stars 424 forks source link

[FEATURE] Add VCC Prerequisites JSON Argument #469

Open BluWizard10 opened 5 months ago

BluWizard10 commented 5 months ago

Is your feature request related to a problem? Please describe. It is clear that many Packages use the "vpmDependencies" argument in order to identify a VPM Package that is required in order to add to the Project. But this makes it a strict dependency, therefore the Dependency cannot be removed unless the Package is removed first.

Describe the solution you'd like What I'm proposing is that we add a new argument called "vpmOptionalDependencies" or similar.

It would function like a "vpmDependencies" but in a somewhat different manner. It instead acts as a "recommendation" instead of a "requirement" - asks the user to Add the Prerequisite VPM with the option to decline and still add the Package, or asks to Upgrade the Prerequisite VPM for the Package to add with the option to decline and still add the Package.

With this argument, the Package can be safely removed regardless if the "vpmOptionalDependencies" was removed or not.

This also would have the same redundancies as a "vpmDependencies", where if for example a "vpmOptionalDependencies": { "com.vrchat.avatars": "^3.6" } is defined, it would only appear in Avatar SDK Projects.

Describe alternatives you've considered Currently, there is no other solution available with the current json implementation. Only the "Requirement" spec exists.

Additional Context I understand this is probably a niche feature request, but with the right implementation I think it would add additional flexibility to Community Repository maintainers with their own VPMs without having to strictly require a VPM Package at all times.

Sayamame-beans commented 5 months ago

Is this called optionalDependencies in other environments? So, vpmOptionalDependencies...? (also currently not exist)

BluWizard10 commented 5 months ago

Is this called optionalDependencies in other environments?

So, vpmOptionalDependencies...?

I'm not sure. But now that I think about it, vpmOptionalDependencies sounds a bit better than what I initially thought.