Julia Project.toml 中的 [extras] 和 [targets] 的用途是什么?

lea*_*ine 7 julia flux.jl

在以下示例中(从Flux project.toml复制的代码) [extras] 和 [targets] 部分的用途是什么?

[compat]
Adapt = "3.0"
ArrayInterface = "3.1, 4, 5, 6"
CUDA = "3"
.
.
.
Zygote = "0.6.34"
julia = "1.6"

[extras]
ComponentArrays = "b0b7db55-cfe3-40fc-9ded-d10e2dbeff66"
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
.
.
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[targets]
test = ["Test", "Documenter", "IterTools", "LinearAlgebra", "FillArrays", "ComponentArrays"]
Run Code Online (Sandbox Code Playgroud)

小智 3

它用于指定子目录的依赖关系,但同时这些依赖关系不被包使用。

拥有

[extras]
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[targets]
test = ["Test"]
Run Code Online (Sandbox Code Playgroud)

表示目标test/使用依赖关系Test。并且Test依赖项是额外的,这意味着它不会被包使用。

这相当于具有test/Project.toml以下内容:

[deps]
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
Run Code Online (Sandbox Code Playgroud)

请注意,与第二个方法不同,第一个方法与所有 Julia 版本兼容1.x