Say I have a Project.toml
structure as this one:
name = "MyPackage"
[deps]
FirstDep = "..."
SecondDep = "..."
[weakdeps]
FirstWeakDep = "..."
[extensions]
ExtModule = "FirstWeakDep"
[compat]
julia = "1.9"
and I want that when a user does using MyPackage, FirstWeakDep
, when the extension is loaded the first time, a new package, say ThirdDep
, gets installed. This way, I can import ThirdDep
in ExtModule
even though it wasn’t previously installed when the user did ]add MyPackage
. After the first time, it shouldn’t install it again clearly, just import it.
In practice this would allow not installing ThirdDep
when MyPackage
gets installed but only when the extension is used the first time, which could be useful if ThirdDep
requires a lot of time to install and it is needed just by a few users. Is there a way to do this? Should the Project.toml
be changed somehow to achieve this?
I didn’t find anything in the documentation of Pkg.jl
about this in the presentation of package extensions Conditional-loading-of-code-in-packages-(Extensions)