配置
tact.config.json
是 Tact 项目的入口点。它是一个 JSON 文件,包含所有项目和编译器参数的列表。
本页列出了 模式中的所有配置选项。 请查看右侧的目录,以方便浏览。 请查看右侧的目录,以方便浏览。
$schema
编辑器可使用JSON 模式 文件提供自动完成和悬停提示:configSchema.json。
只需在配置文件顶部添加 $schema
字段即可:
{ "$schema": "http://raw.githubusercontent.com/tact-lang/tact/main/src/config/configSchema.json", "projects": []}
项目
带有相应编译选项的 Tact 项目列表。 每个 .tact
文件都代表自己的 Tact 项目。 每个 .tact
文件都代表自己的 Tact 项目。
{ "projects": [ { }, { } ]}
name
name
是项目的名称。 所有生成的文件都以此名称为前缀。
在Blueprint中,name
指的是合约本身的名称。
{ "projects": [ { "name": "some_prefix" }, { "name": "ContractUnderBlueprint" } ]}
path
项目 Tact 文件的路径。 每个项目只能指定一个 Tact 文件。 每个项目只能指定一个 Tact 文件。
在 Blueprint中,path
被wrapper/ContractName.compile 中的
target字段所取代。 默认情况下,或在“compilables/ContractName.compile.ts”中,如果你有
separateCompilables,则在 [
blueprint.config.ts`]bp-config 中设置的选项。
{ "projects": [ { "name": "some_prefix", "path": "./contract.tact" } ]}
output
output
是放置所有生成文件的目录路径。
在 Blueprint 中,output
未被使用,并且所有生成的文件总是放在 build/ProjectName/
中。
{ "projects": [ { "name": "some_prefix", "path": "./contract.tact", "output": "./contract_output" } ]}
options
项目的编译选项。
在Blueprint中,它们作为默认设置,除非在wrappers/ContractName.compile.ts
中修改为默认设置,或者在compilables/ContractName.compile.ts
中修改(如果您在blueprint.config.ts
中设置了separateCompilables
选项)。
{ "projects": [ { "name": "some_prefix", "path": "./contract.tact", "output": "./contract_output", "options": {} }, { "name": "ContractUnderBlueprint", "options": {} } ]}
debug
默认为 false
。
如果设置为true
,则启用合约的调试输出,并允许使用dump()
函数,这对调试目的很有用。 启用此选项后,合约将报告它是在调试模式下使用 supported_interfaces
方法编译的。
{ "projects": [ { "name": "some_prefix", "path": "./contract.tact", "output": "./contract_output", "options": { "debug": true } }, { "name": "ContractUnderBlueprint", "options": { "debug": true } } ]}
masterchain
默认为 false
。
如果设置为 true
,则启用 masterchain 支持。
{ "projects": [ { "name": "some_prefix", "path": "./contract.tact", "output": "./contract_output", "options": { "masterchain": true } }, { "name": "ContractUnderBlueprint", "options": { "masterchain": true } } ]}
external
默认为 false
。
如果设置为 true
,则启用对 external 消息接收器的支持。
{ "projects": [ { "name": "some_prefix", "path": "./contract.tact", "output": "./contract_output", "options": { "external": true } }, { "name": "ContractUnderBlueprint", "options": { "external": true } } ]}
ipfsAbiGetter
默认为 false
。
如果设置为 true
,则可生成带有描述合约 ABI 的 IPFS 链接的getter。
{ "projects": [ { "name": "some_prefix", "path": "./contract.tact", "output": "./contract_output", "options": { "ipfsAbiGetter": true } }, { "name": "ContractUnderBlueprint", "options": { "ipfsAbiGetter": true } } ]}
interfacesGetter
默认为 false
。
如果设置为 true
,则可生成包含合约所提供接口列表的 getter。
{ "projects": [ { "name": "some_prefix", "path": "./contract.tact", "output": "./contract_output", "options": { "interfacesGetter": true } }, { "name": "ContractUnderBlueprint", "options": { "interfacesGetter": true } } ]}
experimental
将来可能会取消的试验性选项。 谨慎使用!
{ "projects": [ { "name": "some_prefix", "path": "./contract.tact", "output": "./contract_output", "options": { "experimental": {} } }, { "name": "ContractUnderBlueprint", "options": { "experimental": {} } } ]}
inline
C
默认为 false
。
如果设置为true
,则启用合约中所有函数的内联。 这可以减少Gas使用,但代价是合约更大。
{ "projects": [ { "name": "some_prefix", "path": "./contract.tact", "output": "./contract_output", "options": { "experimental": { "inline": true } } }, { "name": "ContractUnderBlueprint", "options": { "experimental": { "inline": true } } } ]}
mode
项目的编译模式。 有效值为
值 | 说明 |
---|---|
"full" | (默认) 运行整个编译管道并发布FunC 代码,BoC 和各种实用文件,包括TypeScript的包装文件。 |
"fullWithDecompilation" | 运行整个编译管道,如 “full” ,并以 BoC 格式反编译生成的二进制代码。 |
"funcOnly" | 只输出中间 FunC 代码,阻止进一步编译。 |
"checkOnly" | 仅执行语法和类型检查,阻止进一步编译。 |
在 Blueprint 中,mode
始终设置为"full"
,且不可覆盖。
{ "projects": [ { "name": "some_prefix", "path": "./contract.tact", "output": "./contract_output", "mode": "full" }, { "name": "func_only", "path": "./contract.tact", "output": "./contract_output", "mode": "funcOnly" } ]}
Full example
{ "$schema": "http://raw.githubusercontent.com/tact-lang/tact/main/src/config/configSchema.json", "projects": [ { "name": "basic", "path": "./basic.tact", "output": "./basic_output", "mode": "full" }, { "name": "func_only", "path": "./basic.tact", "output": "./basic_output", "mode": "funcOnly" }, { "name": "debugPrefix", "path": "./contracts/contract.tact", "output": "./contracts/output", "options": { "debug": true } }, { "name": "ContractUnderBlueprint", "options": { "debug": false, "masterchain": false, "external": false, "ipfsAbiGetter": true, "interfacesGetter": true, "experimental": { "inline": false } } } ]}