Dependencies

Forc has a dependency management system which can pull packages using git, ipfs, path, or the community registry. This allows users to build and share Forc libraries.

Adding Dependencies

You can add dependencies manually in your Forc.toml, or by using the forc add command.

Using forc add

The forc add CLI supports various sources and optional flags:

forc add <dep> [--path <PATH>] [--git <URL> --tag <TAG>] [--ipfs <CID>] [--contract-dep]

Add Examples

  • From a Git branch:

    forc add custom_lib --git https://github.com/FuelLabs/custom_lib --branch master
    
  • From a local path:

    forc add custom_lib --path ../custom_lib
    
  • From IPFS:

    forc add custom_lib --ipfs QmYwAPJzv5CZsnA...
    
  • From registry (forc.pub):

    forc add custom_lib@0.0.1
    
  • Add as a contract dependency:

    forc add my_contract --git https://github.com/example/contract --contract-dep
    

Optional:

  • --salt <HEX> for custom contract salt.
  • --package <NAME> to target a specific package in a workspace.
  • --manifest-path <PATH> to specify a manifest file.

⚠️ Note: We do not currently support offline mode for projects that use registry sources. Also wildcard declarations (ex: custom_lib = *) to get the latest version available for that package or caret declarations (ex: custom_lib = ^0.1) to get SemVer compatible latest available option for a given dependency is not supported yet.

Once the package is added, running forc build will automatically fetch and resolve the dependencies.

Manually Editing Forc.toml

If your Forc.toml doesn't already have a [dependencies] or [contract-dependencies] table, add one. Below, list the package name and its source.

Local Path

[dependencies]
custom_lib = { path = "../custom_lib" }

IPFS Source

[dependencies]
custom_lib = { ipfs = "QmYwAPJzv5CZsnA..." }

Registry Source (forc.pub)

[dependencies]
custom_lib = "0.0.1"

Removing Dependencies

You can remove one or more dependencies using the forc remove command:

forc remove <dep> [--contract-dep] [--package <NAME>] [--manifest-path <PATH>]

Remove Examples

  • Remove from [dependencies]:

    forc remove custom_lib
    
  • Remove from [contract-dependencies]:

    forc remove my_contract --contract-dep
    
  • Target a specific package in a workspace:

    forc remove custom_lib --package my_project
    

Updating Dependencies

To update dependencies in your Forc directory you can run:

forc update

For path and ipfs dependencies this will have no effect. For git dependencies with a branch reference, this will update the project to use the latest commit for the given branch.