配置文件
在这里,您可以了解所有配置选项的详细信息。
workspace
Forc 工作空间的相对目录路径。
workspace: './sway-programs',
属性
workspace
与contracts
、predicates
和scripts
不兼容。
contracts
Sway 合约的相对目录路径列表。
contracts: ['./sway-programs/contracts'],
属性
contracts
与workspace
不兼容。
predicates
Sway 断言的相对目录路径列表。
predicates: ['./sway-programs/predicates'],
属性
predicates
与workspace
不兼容。
scripts
Sway 脚本的相对目录路径列表。
scripts: ['./sway-programs/scripts'],
属性
scripts
与workspace
不兼容。
output
生成 TypeScript 定义时使用的相对目录路径。
output: './src/sway-programs-api',
providerUrl
部署合约时要使用的 URL。
// 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
。
privateKey: '0xa449b1ffee0e2205fa924c6740cc48b3b473aa28587df6dab12abc245d1f5298',
当
autostartFuelCore
属性设置为true
时,privateKey
将被由fuels dev
命令启动的本地fuel-core
节点的consensusKey
覆盖。
snapshotDir
- 仅供
fuels dev
使用。
包含自定义配置(例如 chainConfig.json
、metadata.json
、stateConfig.json
)的目录的相对路径。
仅当 autoStartFuelCore
设置为 true
时才会生效。
snapshotDir: './my/snapshot/dir',
autoStartFuelCore
- 仅供
fuels dev
使用。
设置为 true
时,它将自动执行以下操作:
- 作为
fuels dev
命令的一部分启动一个短暂的本地fuel-core
节点 - 使用最近启动的
fuel-core
节点的 URL 覆盖providerUrl
属性
autoStartFuelCore: true,
如果设置为 false
,则必须自己启动 fuel-core
节点,并通过 providerUrl
设置其 URL。
fuelCorePort
- 仅供
fuels dev
使用。- 当
autoStartFuelCore
设置为false
时被忽略。
启动本地 fuel-core
节点时要使用的端口。
// Default: first free port, starting from 4000
fuelCorePort: 4000,
forcBuildFlags
- 供
fuels build
和fuels deploy
使用。
默认情况下,Sway 程序以 debug
模式编译。
在这里,您可以自定义所有的构建标志,例如以 release
模式构建程序。
// Default: []
forcBuildFlags: ['--release'],
也可以参考:
deployConfig
您可以提供一个准备就绪的部署配置对象:
deployConfig: {},
或者使用一个函数来构建动态部署流程:
- 如果您需要从远程数据源获取并使用配置或数据
- 如果您需要使用已部署合约的 ID — 在这种情况下,我们可以使用
options.contracts
属性来获取必要的合约 ID。例如:
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
)
onSuccess: (event: CommandEvent, config: FuelsConfig) => {
console.log('fuels:onSuccess', { event, config });
},
onFailure
传递一个回调函数,在发生错误时调用。
参数:
error
— 原始错误对象config
— 加载的配置 (fuels.config.ts
)
onFailure: (error: Error, config: FuelsConfig) => {
console.log('fuels:onFailure', { error, config });
},
useBuiltinForc
选择是否使用内置的 forc
二进制文件。
如果未提供,则默认使用 system
二进制文件。
如果 system
二进制文件不存在,则打印警告并使用 built-in
二进制文件。
// Default: undefined
useBuiltinForc: false,
也可以参考:
useBuiltinFuelCore
选择是否使用内置的 fuel-core
二进制文件。
如果未提供,则默认使用 system
二进制文件。
如果 system
二进制文件不存在,则打印警告并使用 built-in
二进制文件。
// Default: undefined
useBuiltinFuelCore: false,
也可以参考:
加载环境变量
如果您想从 .env
文件加载环境变量,您可以使用 dotenv
包。
首先,安装它:
pnpm install dotenv
npm install dotenv
然后,您可以在您的 fuels.config.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,
});