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网络。 对于合约的部署任务,可以分阶段进行,对应地可以创建多个迁移文件。 命令 要运行迁移,可执行以下命 ...