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 getSemVer
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.