跳转到内容

配置

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中,pathwrapper/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": {}
}
}
]
}
inlineC

默认为 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
}
}
}
]
}