The fuels
CLI consists of a couple commands.
fuels init
npx fuels 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 fuels init --contracts ./my-contracts/* --output ./src/sway-contracts-api
Using Forc workspaces ? Try this instead:
npx fuels 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 fuels help build
Options:
-p, --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 fuels build
workspace
using forc
1 fuels-typegen
2 npx fuels 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 fuels deploy
workspace
./src/sway-programs-api/contract-ids.json
{
"myContract1": "0x..",
"myContract2": "0x.."
}
Use it when instantiating your contracts:
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)
.txParams({ gasLimit: 10_000 })
.dryRun();
expect(value.toHex()).toEqual(toHex(1337));
For a complete example, see:
fuels dev
npx fuels dev
The fuels dev
command do three things:
fuel-core
node (docs ) build
and deploy
once at the start In
dev
mode, everytime 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 typegen
Manually generates type definitions and factory classes from ABI JSON files.
npx fuels 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 fuels versions
You have all the right versions! ⚡
┌───────────┬───────────┬─────────────────┐
│ │ Supported │ Yours / System │
├───────────┼───────────┼─────────────────┤
│ Forc │ 0.30.0 │ 0.30.0 │
├───────────┼───────────┼─────────────────┤
│ Fuel-Core │ 0.14.0 │ 0.14.0 │
└───────────┴───────────┴─────────────────┘
fuels forc
Simple wrapper around the forc
binary.
Check also:
fuels core
Simple wrapper around the fuel-core
binary.
Check also: