The fuels
CLI consists of a couple of commands.
fuels init
npx [email protected] help init
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:
npx [email protected] init --contracts ./my-contracts/* --output ./src/sway-contracts-api
Using Forc workspaces ? Try this instead:
npx [email protected] init --workspace ./sway-programs --output ./src/sway-programs-api
This will give you a minimal configuration:
import { createConfig } from 'fuels';
export default createConfig({
workspace: './sway-programs', // forc workspace
output: './src/sway-programs-api',
});
In a nutshell:
.
├── sway-programs # <— forc workspace
├── src
│ └── sway-programs-api # <— output
├── fuels.config.ts
└── package.json
fuels build
npx [email protected] help build
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:
npx [email protected] build
workspace
using forc
1 fuels-typegen
2 npx [email protected] build --deploy
Using the --deploy
flag will additionally:
fuel-core
node if needed (docs ) deploy
on that node This is useful when working with contracts because a contract's ID is generated only on deployment.
fuels deploy
npx [email protected] deploy
The fuels deploy
command does two things:
workspace
. ./src/sway-programs-api/contract-ids.json
{
"myContract1": "0x..",
"myContract2": "0x.."
}
Use it when instantiating your contracts:
import { Sample } 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 = new Sample(contractsIds.sample, wallet);
const { value } = await contract.functions.return_input(1337).dryRun();
expect(value.toHex()).toEqual(toHex(1337));
For a complete example, see:
Automatic deployment of proxy contracts can be enabled in Forc.toml
.
For more info, please check these docs:
fuels dev
npx [email protected] dev
The fuels dev
command does three things:
fuel-core
node (docs ) build
and deploy
once at the start In
dev
mode, every time you update a contract on your Forcworkspace
, we re-generate type definitions and factory classes for it, following your pre-configuredoutput
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
npx [email protected] 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.
npx [email protected] help typegen
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.
npx [email protected] versions
┌───────────┬───────────┬────────────────┬─────────────┐
│ │ Supported │ Yours / System │ System Path │
├───────────┼───────────┼────────────────┼─────────────┤
│ Forc │ 0.65.2 │ 0.65.2 │ forc │
├───────────┼───────────┼────────────────┼─────────────┤
│ Fuel-Core │ 0.39.0 │ 0.39.0 │ fuel-core │
└───────────┴───────────┴────────────────┴─────────────┘
You have all the right versions! ⚡