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
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
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)