Skip to content

配置文件

在这里,您可以了解所有配置选项的详细信息。

workspace

Forc 工作空间的相对目录路径。

ts
workspace: './sway-programs',

属性 workspacecontractspredicatesscripts 不兼容。

contracts

Sway 合约的相对目录路径列表。

ts
contracts: ['./sway-programs/contracts'],

属性 contractsworkspace 不兼容。

predicates

Sway 断言的相对目录路径列表。

ts
predicates: ['./sway-programs/predicates'],

属性 predicatesworkspace 不兼容。

scripts

Sway 脚本的相对目录路径列表。

ts
scripts: ['./sway-programs/scripts'],

属性 scriptsworkspace 不兼容。

output

生成 TypeScript 定义时使用的相对目录路径。

ts
output: './src/sway-programs-api',

providerUrl

部署合约时要使用的 URL。

ts
// Default: http://127.0.0.1:4000/v1/graphql
providerUrl: 'http://network:port/v1/graphql',

autostartFuelCore 属性设置为 true 时,providerUrl 将被最近由 fuels dev 命令启动的本地 fuel-core 节点的 URL 覆盖。

privateKey

用于部署合约时的钱包私钥。

此属性理想情况下应该来自环境变量 — process.env.MY_PRIVATE_KEY

ts
privateKey: '0xa449b1ffee0e2205fa924c6740cc48b3b473aa28587df6dab12abc245d1f5298',

autostartFuelCore 属性设置为 true 时,privateKey 将被由 fuels dev 命令启动的本地 fuel-core 节点的 consensusKey 覆盖。

snapshotDir

包含自定义配置(例如 chainConfig.jsonmetadata.jsonstateConfig.json)的目录的相对路径。

仅当 autoStartFuelCore 设置为 true 时才会生效。

ts
snapshotDir: './my/snapshot/dir',

autoStartFuelCore

设置为 true 时,它将自动执行以下操作:

  1. 作为 fuels dev 命令的一部分启动一个短暂的本地 fuel-core 节点
  2. 使用最近启动的 fuel-core 节点的 URL 覆盖 providerUrl 属性
ts
autoStartFuelCore: true,

如果设置为 false,则必须自己启动 fuel-core 节点,并通过 providerUrl 设置其 URL。

fuelCorePort

启动本地 fuel-core 节点时要使用的端口。

ts
// Default: first free port, starting from 4000
fuelCorePort: 4000,

forcBuildFlags

默认情况下,Sway 程序以 debug 模式编译。

在这里,您可以自定义所有的构建标志,例如以 release 模式构建程序。

ts
// Default: []
forcBuildFlags: ['--release'],

也可以参考:

deployConfig

您可以提供一个准备就绪的部署配置对象:

ts
deployConfig: {},

或者使用一个函数来构建动态部署流程:

  • 如果您需要从远程数据源获取并使用配置或数据
  • 如果您需要使用已部署合约的 ID — 在这种情况下,我们可以使用 options.contracts 属性来获取必要的合约 ID。例如:
ts
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,
      },
    ],
  };
},

onSuccess

传递一个回调函数,在成功运行后调用。

参数:

  • event — 触发此执行的事件
  • config — 加载的配置 (fuels.config.ts)
ts
onSuccess: (event: CommandEvent, config: FuelsConfig) => {
  console.log('fuels:onSuccess', { event, config });
},

onFailure

传递一个回调函数,在发生错误时调用。

参数:

  • error — 原始错误对象
  • config — 加载的配置 (fuels.config.ts)
ts
onFailure: (error: Error, config: FuelsConfig) => {
  console.log('fuels:onFailure', { error, config });
},

useBuiltinForc

选择是否使用内置forc 二进制文件。

如果未提供,则默认使用 system 二进制文件。

如果 system 二进制文件不存在,则打印警告并使用 built-in 二进制文件。

ts
// Default: undefined
useBuiltinForc: false,

也可以参考:

useBuiltinFuelCore

选择是否使用内置fuel-core 二进制文件。

如果未提供,则默认使用 system 二进制文件。

如果 system 二进制文件不存在,则打印警告并使用 built-in 二进制文件。

ts
// Default: undefined
useBuiltinFuelCore: false,

也可以参考:

加载环境变量

如果您想从 .env 文件加载环境变量,您可以使用 dotenv 包。

首先,安装它:

sh
pnpm install dotenv
sh
npm install dotenv

然后,您可以在您的 fuels.config.ts 文件中使用它:

ts
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,
});