Adding Dependencies

Any registered package used by our new repo must be recorded in the Project.toml file. The easiest way to add packages is via the package manger. For our package, we are going to add StaticArrays.jl and LinearAlgebra as dependencies.

To do this, we need to first activate the Project.toml file for our project using the package manager:

] activate /path/to/JuliaTemplateRepo

Once activated, we add dependencies the exact same way we do normally:

(JuliaTemplateRepo) pkg> add StaticArrays
(JuliaTemplateRepo) pkg> add LinearAlgebra
(JuliaTemplateRepo) pkg> resolve

The last command isn't always needed, but is recommended, since it updates our Manifest.toml file based on the contents of the Project.toml file.

If we open our Project.toml file we should now see our packages under the [deps] header:

name = "JuliaTemplateRepo"
uuid = "bfba84be-7fa7-49e4-96a7-8b4754465918"
authors = ["Brian Jackson <bjack205@gmail.com>"]
version = "0.1.0"

[deps]
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"

We now need to specify the versions of the non-standard packages we officially support. The easiest–-and more conservative–-way to determine our compatibility is to restrict the versions to those that are currently being used. We can query this using the package manager:

(JuliaTemplateRepo) pkg> st

Which should return something like

st

Here we see that LinearAlgebra is a part of the standard library since it doesn't have an associated version, and that we're using StaticArrays v0.12.4. Since all patches should be backward-compatible, we will allow any of the v0.12.x versions of StaticArrays.

We add this compatibility requirement, along with our required Julia version, to the [compat] section of our Project.toml file:

name = "JuliaTemplateRepo"
uuid = "bfba84be-7fa7-49e4-96a7-8b4754465918"
authors = ["Brian Jackson <bjack205@gmail.com>"]
version = "0.1.0"

[deps]
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"

[compat]
StaticArrays = "0.12"
julia = "1"

The Julia package registrator requires that all packages have upper-bounded compatibility requirements.

Before committing our Project.toml file, we need to make sure our Manifest.toml file isn't included in our repo, since this file is dependent on the environment of the user. Add Manifest.toml to your .gitignore file.