Julia is a fantastic language for scientific computing and as a result is gaining traction among researchers. In research projects, it often happens that you need to write code which could be generalized and reused. For example, in a recent project, I coded up a marriage market model as a component of a larger model. The best way to make such code reusable is to create a package (most languages provide a packaging system).
Julia provides a convenient way to create a new package.
As explained in the manual,
Pkg.generate("NewPackage", "MIT") initializes a git repo containing the package structure for a package named
NewPackage with an MIT license.
If you configure your GitHub username in git (
git config --global github.user "USERNAME" ), it will even configure the remote repository (which you’ll still need to create in GitHub).
Since the Julia package directory isn’t a very convenient location for developing your package (
~/.julia/v0.4/), I recommend moving your package (cut and paste) to your desired location and then symlinking it to the Julia package directory (
ln -s your/directory/NewPackage ~/.julia/v0.4/NewPackage).
Converting your code into a package takes a few simple steps.
src/NewPackage.jl contains the actual module that users will import.
The manual explains how to create a module.
You simply define functions and types and use the
export statement to choose which ones to make available externally.
A good way to organize your code is to put it in the
src directory and then
include() it in the module file.
Next, you should specify which packages are required as dependencies in the
The file already includes the current stable version of Julia as a requirement.
While optional, it’s a good idea to include some tests of your code!
Put them in
test/runtests.jl and run
Pkg.test("NewPackage") to run your tests.
If you enable Travis CI in GitHub, it will automatically run your tests when you
Finally, don’t forget to fill out the
To share your package with others, push it to GitHub and then others can install it with
The manual also has instructions for registering your package as an official Julia package that can be installed with