跳转到内容

配置

tact.config.json 是 Tact 项目的入口点。它是一个 JSON 文件,包含所有项目和编译器参数的列表。

本页列出了 模式中的所有配置选项。 请查看右侧的目录,以方便浏览。

$schema

编辑器可使用JSON 模式 文件提供自动完成和悬停提示:configSchema.json

只需在配置文件顶部添加 $schema 字段即可:

{
"$schema": "http://raw.githubusercontent.com/tact-lang/tact/main/schemas/configSchema.json",
"projects":[]
}

项目

带有相应编译选项的 Tact 项目列表。 每个 .tact 文件都代表自己的 Tact 项目。

{
"projects":[
{ },
{ }
]
}

name

name 是项目名称。所有生成的文件都以此为前缀。

Blueprint 中,“name “指合同本身的名称。

{
"projects":[
{
"name""some_prefix"
},
{
"name""ContractUnderBlueprint"
}
]
}

path

项目 Tact 文件的路径。 每个项目只能指定一个 Tact 文件。

Blueprint 中,pathwrappers/ContractName.compile.ts 中的 target 字段取代。

{
"projects": [
{
"name": "some_prefix",
"path": "./contract.tact"
}
]
}

output

output 是放置所有生成文件的目录路径。

蓝图 中,不使用 output ,所有生成的文件始终放在 build/ProjectName/ 中。

{
"projects": [
{
"name": "some_prefix",
"path": "./contract.tact",
"output": "./contract_output"
}
]
}

options

项目的编译选项。

Blueprint 中,除非在wrappers/ContractName.compile.ts中进行修改,否则它们将作为默认设置运行。

{
"projects": [
{
"name": "some_prefix",
"path": "./contract.tact",
"output": "./contract_output",
"options": {}
},
{
"name": "ContractUnderBlueprint",
"options": {}
}
]
}

debug

默认为 false

debug: true. 启用合约的调试输出。这对调试非常有用。启用此合约将报告它是在调试模式下使用 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](/book/contracts#getter-functions)。

{
"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

默认为 false

inline: true. 启用合同中所有函数的内联。这可以减少gas的使用,但代价是需要更大的合约。

{
"projects": [
{
"name": "some_prefix",
"path": "./contract.tact",
"output": "./contract_output",
"options": {
"experimental": {
"inline": true
}
}
},
{
"name": "ContractUnderBlueprint",
"options": {
"experimental": {
"inline": true
}
}
}
]
}

mode

项目的编译模式。 有效值为

ValueDescription
"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/schemas/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
}
}
}
]
}