Truffle 编译合约

位置

所有的合约源文件都位于项目的 contracts/目录中。由于合约是用Solidity语言编写的,所以合约源文件的扩展名都是 .sol。相关的Solidity库文件的扩展名也是 .sol

如果是原始的Truffle项目模板(通过 truffle init创建),里面将包含一个 Migrations.sol源文件,用于部署合约。如果使用 Truffle Box,里面将包含多个文件。

命令

要编译Truffle项目,切换到项目根目录,然后在终端中执行以下命令:

truffle compile

在第一次执行时,将编译所有合约。在随后的执行中,Truffle将只编译更改过的合约。如果你想全部编译,可以使用 --all选项执行上面的命令。

编译构件(artifact)

编译的构件将放在项目根目录下的 build/contract/目录中, 如果此目录不存在,则创建该目录。

这些构件是Truffle内部工作不可或缺的,它们在应用程序的成功部署中扮演着重要的角色。你不应该编辑这些文件,在编译和部署合约时,它们将被覆盖。

依赖项

可以使用Solidity语言的 import命令声明合约依赖项。Truffle将按照正确的顺序编译,并确保所有依赖项都被编译。依赖关系可以通过2种方式指定:

通过文件名导入依赖项

要从其他文件导入合约,可以将以下代码添加到Solidity源文件中:

import

"./AnotherContract.sol"

;

这将导入另一个源文件 AnotherContract.sol中的所有合约,导入文件的路径是基于当前源文件的相对路径。

注意,Solidity语言还允许其他导入语法。有关更多信息,请参阅Solidity文档。

从外部包导入合约

Truffle支持通过EthPM和NPM安装依赖项。要从依赖项导入合约,可使用以下语法

import

"somepackage/SomeContract.sol"

;

这里, somepackage表示通过EthPM或NPM安装的包。 SomeContract.sol表示该包提供的Solidity源文件。

注意,在搜索NPM安装的包之前,Truffle将首先搜索EthPM安装的包,因此在命名冲突的罕见情况下,将使用EthPM安装的包。

有关如何使用Truffle包管理特性的更多信息,请参阅Truffle EthPM和NPM文档。

下一章:Truffle 迁移(部署)合约

  迁移脚本是JavaScript文件,用于将合约部署到Ethereum网络。 对于合约的部署任务,可以分阶段进行,对应地可以创建多个迁移文件。  命令 要运行迁移,可执行以下命 ...