Config File
Here, you can learn more about all configuration options.
workspace
Relative directory path to Forc workspace.
workspace: './sway-programs',The property
workspaceis incompatible withcontracts,predicates, andscripts.
contracts
List of relative directory paths to Sway contracts.
contracts: ['./sway-programs/contracts'],The property
contractsis incompatible withworkspace.
predicates
List of relative directory paths to Sway predicates.
predicates: ['./sway-programs/predicates'],The property
predicatesis incompatible withworkspace.
scripts
List of relative directory paths to Sway scripts.
scripts: ['./sway-programs/scripts'],The property
scriptsis incompatible withworkspace.
output
Relative directory path to use when generating Typescript definitions.
output: './src/sway-programs-api',providerUrl
The URL to use when deploying contracts.
// Default: http://127.0.0.1:4000/v1/graphql
providerUrl: 'http://network:port/v1/graphql',When
autostartFuelCoreproperty is set totrue, theprovidedUrlis overridden by that of the local short-livedfuel-corenode started by thefuels devcommand.
privateKey
Wallet private key, used when deploying contracts.
This property should ideally come from env — process.env.MY_PRIVATE_KEY.
privateKey: '0xa449b1ffee0e2205fa924c6740cc48b3b473aa28587df6dab12abc245d1f5298',When
autostartFuelCoreproperty is set totrue, theprivateKeyis overridden with theconsensusKeyof the local short-livedfuel-corenode started by thefuels devcommand.
snapshotDir
- Used by
fuels devonly.
Relative path to directory containing custom configurations for fuel-core, such as:
chainConfig.jsonmetadata.jsonstateConfig.json
This will take effect only when autoStartFuelCore is true.
snapshotDir: './my/snapshot/dir',autoStartFuelCore
- Used by
fuels devonly.
When set to true, it will automatically:
- Starts a short-lived
fuel-corenode as part of thefuels devcommand - Override property
providerUrlwith the URL for the recently startedfuel-corenode
autoStartFuelCore: true,If set to false, you must spin up a fuel-core node by yourself and set the URL for it via providerUrl.
fuelCorePort
- Used by
fuels devonly.- Ignored when
autoStartFuelCoreis set tofalse.
Port to use when starting a local fuel-core node.
// Default: first free port, starting from 4000
fuelCorePort: 4000,forcBuildFlags
- Used by
fuels buildandfuels deploy.
Sway programs are compiled in debug mode by default.
Here you can customize all build flags, e.g. to build programs in release mode.
// Default: []
forcBuildFlags: ['--release'],Check also:
deployConfig
You can supply a ready-to-go deploy configuration object:
deployConfig: {},Or use a function for crafting dynamic deployment flows:
- If you need to fetch and use configs or data from a remote data source
- If you need to use IDs from already deployed contracts — in this case, we can use the
options.contractsproperty to get the necessary contract ID. For example:
deployConfig: async (options: ContractDeployOptions) => {
// ability to fetch data remotely
await Promise.resolve(`simulating remote data fetch`);
// get contract by name
const { contracts } = options;
const contract = contracts.find(({ name }) => {
const found = name === MY_FIRST_DEPLOYED_CONTRACT_NAME;
return found;
});
if (!contract) {
throw new Error('Contract not found!');
}
return {
storageSlots: [
{
key: '0x..',
/**
* Here we could initialize a storage slot,
* using the relevant contract ID.
*/
value: contract.contractId,
},
],
};
},onBuild
A callback function that is called after a build event has been successful.
Parameters:
config— The loaded config (fuels.config.ts)
onBuild: (config: FuelsConfig) => {
console.log('fuels:onBuild', { config });
},onDeploy
A callback function that is called after a deployment event has been successful.
Parameters:
config— The loaded config (fuels.config.ts)data— The data (an array of deployed contracts)
import type { DeployedContract, FuelsConfig } from 'fuels';
onDeploy: (config: FuelsConfig, data: DeployedContract[]) => {
console.log('fuels:onDeploy', { config, data });
},onDev
A callback function that is called after the fuels dev command has successfully restarted.
Parameters:
config— The loaded config (fuels.config.ts)
onDev: (config: FuelsConfig) => {
console.log('fuels:onDev', { config });
},onNode
A callback function that is called after the fuels node command has successfully refreshed.
Parameters:
config— The loaded config (fuels.config.ts)
onNode: (config: FuelsConfig) => {
console.log('fuels:onNode', { config });
},onFailure
Pass a callback function to be called in case of errors.
Parameters:
config— The loaded config (fuels.config.ts)error— Original error object
onFailure: (config: FuelsConfig, error: Error) => {
console.log('fuels:onFailure', { config, error });
},forcPath
Path to the forc binary.
When not supplied, will default to using the system binaries (forc).
// Default: 'forc',
forcPath: '~/.fuelup/bin/forc',fuelCorePath
Path to the fuel-core binary.
When not supplied, will default to using the system binaries (fuel-core).
// Default: 'fuel-core'
fuelCorePath: '~/.fuelup/bin/fuel-core',Loading environment variables
If you want to load environment variables from a .env file, you can use the dotenv package.
First, install it:
pnpm install dotenvnpm install dotenvbun install dotenvThen, you can use it in your fuels.config.ts file:
import { createConfig } from 'fuels';
import dotenv from 'dotenv';
import { NODE_URL } from '@/lib';
dotenv.config({
path: ['.env.local', '.env'],
});
const fuelCorePort = +(process.env.NEXT_PUBLIC_FUEL_NODE_PORT as string) || 4000;
export default createConfig({
workspace: './sway-programs',
output: './src/sway-api',
fuelCorePort,
providerUrl: NODE_URL,
});