在处理 Julia 包时,我们可以通过添加 ]add --extra Foo
来声明某个依赖项是
not面向用户的。这会将
Foo
放入 [extras]
的 Project.toml
部分。
但是,在测试时我遇到了一个奇怪的问题:
julia --project=.
(Bar) pkg> add --extra JuliaFormatter
julia> using JuliaFormatter
│ Package JuliaFormatter not found, but a package named JuliaFormatter is available from a registry.
│ Install package?
│ (Bar) pkg> add JuliaFormatter
└ (y/n/o) [y]:
如何在启用
extras
的情况下激活我的项目?
[extras]
本身是没有用的。您还必须指定 [targets]
。 extras
用于指定子目录的依赖关系,其中包本身不使用这些依赖关系。在下面的示例 TOML 中:
[extras]
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
[targets]
test = ["Test"]
Test
被指定为 子目录、目标、test/
的依赖项。
这记录在 https://pkgdocs.julialang.org/v1/creating-packages/#target-based-test-specific-dependency。
您可以为
test
和 build
目标指定任意多个依赖项:
[extras]
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
JET = "c3a54625-cd67-489e-a8e7-0a5a0ff4e31b"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
XUnit = "3e3c03f2-1a94-11e9-2981-050a4ca824ab"
[targets]
test = ["Aqua", "JET", "XUnit", "Test"]