Skip to content

Package Manager

Nubo includes a package manager for adding, locking, downloading, resolving, and deleting packages.

The package manager uses two project files:

FilePurpose
_nubo.yamlHuman-facing package/project metadata and direct dependencies.
lock.yamlExact dependency lockfile with full commit hashes and package checksums.

Packages are downloaded into a global cache under the user’s home directory.

~/nubo/packages/

A package is usually added from a Git URL-like package path.

Terminal window
nubo get github.com/nubolang/color

After adding, Nubo stores package metadata in _nubo.yaml and exact locked data in lock.yaml.

PageDescription
Project Files_nubo.yaml and lock.yaml.
Adding PackagesHow nubo get resolves, clones, caches, and locks packages.
Downloading PackagesHow nubo download restores dependencies from lock.yaml.
Import ResolutionHow Nubo maps imports to cached packages.
Deleting PackagesHow nubo del removes packages safely.
CacheGlobal package cache layout and validation.
Package AuthoringCreating a package with nubo init.
TroubleshootingCommon package manager problems.

Create package metadata:

Terminal window
nubo init

Add a package:

Terminal window
nubo get github.com/nubolang/color

Use the package:

import color from "@nubolang/color"
println(color.green("success"))

Download all locked dependencies later:

Terminal window
nubo download

Delete a package:

Terminal window
nubo del github.com/nubolang/color

nubo get uses a remote source like:

github.com/nubolang/color

But the package name stored in the lockfile is:

nubolang/color

So imports are resolved by package name:

import color from "@nubolang/color"

The package cache still remembers the original domain and remote source.