Setting up a Julia Project or Package

PackageMaker is mostly a GUI for the Julia package PkgTemplates

What do you want to do?


Depending on your choice, a different set of options will be selected, which you however can override manually.

Options and Plugins

Most of the functionalities of PkgTemplates is provided by plugins.
The following section provides access to general options as well as to selected PkgTemplates plugins.

General Options.
Create a package (vs. a project).

Project/Package name. Required input.

User name. Required for many plugins.

Authors. Will be an entry in Project.toml.

Directory to place project in. Required input.
Add .jl suffix to the name of the project folder

URL to the code hosting service where the project will reside.

Minimum allowed Julia version for this package.

Short package* info.
This will be put into the package docstring. If you plan to publish it on GitHub, it is recommended to provide (the same) short info under "About", which will also be then shown on juliahub.com after the package registration.
*Projects have no docstrings


Packages to add to your project. Suffix .jl is accepted, but not required. You can of course always add packages later on using Pkg.
Add these packages to the source code like using Foo
Creates a Project.toml.

The initial version of created package (ignored for projects).
Creates a module entrypoint.

Template file for src/MyPackage.jl
Sets up testing for packages.

Template file for runtests.jl
Create a new project for tests (test/Project.toml).
Add quality tests with Aqua.jl.

List of Aqua tests to skip. For full power of Aqua testing, edit your runtests.jl file manually.
Add a linting test with JET.jl (works best on type-stable code).
Creates a README file that contains badges for other included plugins.

Template file for the README.

File destination, relative to the repository root.
Put the badges on the same line as the package name.
Creates a license file.
Name of a license supported by PkgTemplates.

Path to a custom license file. This keyword takes priority over name.

File destination, relative to the repository root. For example, "LICENSE.md" might be desired.
Creates a Git repository and a .gitignore file.

Patterns to add to the .gitignore

Your real name, if you have not set user.name with Git.

Your email address, if you have not set user.email with Git.

The desired name of the repository's default branch.
Use SSH for the remote. If left unset, HTTPS is used.
Add a .jl suffix to the remote URL.
Commit Manifest.toml.
Sign commits with your GPG key.
This option requires that the Git CLI is installed, and for you to have a GPG key associated with your committer identity.

Integrates your packages with GitHub Actions..
Integrates your packages with CompatHelper via GitHub Actions.
Adds GitHub release support via TagBot.
Setups Dependabot to create PRs whenever GitHub actions can be updated. This is very similar to CompatHelper, which performs the same task for Julia package dependencies.
Sets up documentation generation via Documenter.jl. Only subset of options currently supported.
Sets up code coverage submission from CI to Codecov..
You can save the applicable parameter for later reuse. Excluded are: project name, description, and added dependencies.

🞫 Project name OK
🞫 Project directory OK
✓ "Save Configuration" checkbox unselected (if desired, save config prior to creating project)