Godot Version
agnostic
Question
I have a number of addons I am managing that I’d like to make more public, except there are dependency issues. To make addon X public, it needs addon Y, and addon Z requires both X & Y. I have all my addons in one git repo now, and that works for me project to project, but in making public addons it wouldn’t be feasible for others to download an entire redundant set of addons just to use one and copying and pasting the necessary modules for each addon would just result in a mess. Its a familiar story but I’d like some feedback about to handle that for Godot from others who have dealt with this before.
Do you want to make them be one add-on or so I not understand the problem?
I’ve never made an addon myself, but it seems there are only 3 options:
- Bundle all of your addons together in a singular super addon.
- Take the time to make none of the addons depend on each other.
- Not bother to release the addons publicly at all.
You haven’t given us your list of addons and what they do. So it’s impossible for us to give you an informed, specific answer.
1 Like
I’m making a large internal monorepo of addons suitable for public consumption as multiple separate git repos, the issue being how to effectively partition that when many are interdependent.
I do not need to provide specific repos as the question isn’t that. It is number 2, and that will take more time. My question is general to solicit feedback from others who may have faced this similarly.
We didn’t ask for the repos. Just 1-2 sentence explanations as to what each addon does.
If you explain, we can provide a better answer.
Generaly, I would recommend the 2nd option but it depends on what the add-ons are
If it’s just a git repo, just make a Readme and explain the dependencies. You can put each repo in its own addon folder. You just can’t put that in the Godot Asset Library because they don’t support package dependency. An example is my Game Template Plugin.
Alternately, you can detect if the Autoload is loaded and if not, have your repos not use it. If they’re loosely coupled that will work. Otherwise, it will not. An example is my User Interface Plugin.