Skip to Content
FeaturesInstalling Packages

Installing Packages

Installing is the core of Forest: one command that downloads a package and everything it depends on into your project, at versions that are resolved together and locked for reproducibility.

$forest install [package-name]aliasesforest iforest grow

Installing a package records it in your forest.json manifest and pins the exact resolved versions in forest-lock.json, so a teammate (or CI) running forest install with no arguments gets the identical tree. Transitive dependencies come along automatically: a package always finds its own dependencies without any configuration from you.

forest install
$ forest i forest/signal
🌳 Installed forest/signal@2.4.2 (+3 dependencies)

Useful variations:

  • forest install with no name installs everything in forest.json, offering to create a bare manifest if the folder doesn’t have one yet.
  • -v <version> installs a specific version instead of the latest.
  • -a <alias> installs the package under an alias, which is how you hold two major versions of the same package side by side.
  • -m <mount> installs into one of your project’s mounts instead of the default dependency folder (Roblox).

If your tree includes a private package your account can’t read, install skips it, installs everything else, lists what it skipped, and exits with status 1.

Per-platform mechanics

What “installed” looks like on disk, and how your code consumes a package, differs by platform:

  • Roblox: packages land in a Packages/ folder you require through generated entry modules. You decide where that folder mounts in the DataModel, and can add more folders (mounts) for server-only or dev-only packages. See Installing on Roblox.
  • UEFN: packages install as Verse files inside your project that you import with using. See Installing on UEFN.

Going deeper

Last updated on