Skip to content

Commands

The fuels CLI consists of a couple of commands.

fuels init

console
npx fuels@0.92.0 help init
console
Options:
  -w, --workspace <path>          Relative dir path to Forc workspace
  -c, --contracts <path|global>   Relative path/globals to  Contracts
  -s, --scripts <path|global>     Relative path/globals to  Scripts
  -p, --predicates <path|global>  Relative path/globals to  Predicates
  -o, --output <path>             Relative dir path for Typescript generation

Creating a sample fuel.config.ts file:

console
npx fuels@0.92.0 init --contracts ./my-contracts/* --output ./src/sway-contracts-api

Using Forc workspaces? Try this instead:

console
npx fuels@0.92.0 init --workspace ./sway-programs --output ./src/sway-programs-api

This will give you a minimal configuration:

ts
import { createConfig } from 'fuels';

export default createConfig({
  workspace: './sway-programs', // forc workspace
  output: './src/sway-programs-api',
});
See code in context

In a nutshell:

sh
.
├── sway-programs # <— forc workspace
├── src
   └── sway-programs-api # <— output
├── fuels.config.ts
└── package.json

See more

fuels build

console
npx fuels@0.92.0 help build
console
Options:
  --path <path>  Path to project root (default: "/Users/anderson/Code/fuel/fuels-ts/apps/docs")
  -d, --deploy       Deploy contracts after build (auto-starts a `fuel-core` node if needed)
  -h, --help         Display help

Examples:

console
npx fuels@0.92.0 build
  1. Build all Sway programs under your workspace using forc 1
  2. Generate types for them using fuels-typegen 2
console
npx fuels@0.92.0 build --deploy

Using the --deploy flag will additionally:

  1. Auto-start a short-lived fuel-core node if needed (docs)
  2. Run deploy on that node

This is useful when working with contracts because a contract's ID is generated only on deployment.

fuels deploy

console
npx fuels@0.92.0 deploy

Note

We recommend using the fuels deploy command only when you are deploying contracts to a local node. If you are deploying contracts to a live network like the Testnet, we recommend using the forc deploy command instead.

The fuels deploy command does two things:

  1. Deploy all Sway contracts under workspace.
  2. Saves their deployed IDs to:
    • ./src/sway-programs-api/contract-ids.json
json
{
  "myContract1": "0x..",
  "myContract2": "0x.."
}

Use it when instantiating your contracts:

ts
import { SampleAbi__factory } from './sway-programs-api';
import contractsIds from './sway-programs-api/contract-ids.json';

/**
  * Get IDs using:
  *   contractsIds.<my-contract-name>
  */

const wallet = new Wallet.fromPrivateKey(process.env.PRIVATE_KEY);
const contract = SampleAbi__factory.connect(contractsIds.sample, wallet);

const { value } = await contract.functions.return_input(1337).dryRun();

expect(value.toHex()).toEqual(toHex(1337));
See code in context

For a complete example, see:

fuels dev

console
npx fuels@0.92.0 dev

The fuels dev command does three things:

  1. Auto-start a short-lived fuel-core node (docs)
  2. Runs build and deploy once at the start
  3. Watches your Forc workspace and repeats the previous step on every change

In dev mode, every time you update a contract on your Forc workspace, we re-generate type definitions and factory classes for it, following your pre-configured output directory. If it's part of another build system running in dev mode (i.e. next dev), you can expect it to re-build / auto-reload as well.

fuels node

console
npx fuels@0.92.0 node

The fuels node command starts a short-lived fuel-core node (docs).

fuels typegen

Manually generates type definitions and factory classes from ABI JSON files.

console
npx fuels@0.92.0 help typegen
console
Options:
  -i, --inputs <path|glob...>  Input paths/globals to your Abi JSON files
  -o, --output <dir>           Directory path for generated files
  -c, --contract               Generate types for Contracts [default]
  -s, --script                 Generate types for Scripts
  -p, --predicate              Generate types for Predicates
  -S, --silent                 Omit output messages

For more info, check:

fuels versions

Check for version incompatibilities between your Fuel Toolchain component versions, matching them against the ones supported by the Typescript SDK version that you have.

console
npx fuels@0.92.0 versions
console
┌───────────┬───────────┬────────────────┬─────────────┐
│           │ Supported │ Yours / System │ System Path │
├───────────┼───────────┼────────────────┼─────────────┤
│ Forc      │ 0.61.2    │ 0.61.2         │ forc        │
├───────────┼───────────┼────────────────┼─────────────┤
│ Fuel-Core │ 0.31.0    │ 0.31.0         │ fuel-core   │
└───────────┴───────────┴────────────────┴─────────────┘

You have all the right versions! ⚡