[Contract] truffle-flattener 合并 Solidity 文件的依赖到一个文件

通过llama.cpp与羊驼聊天的网页界面- 详解 Serge 的启动使用

 

使用

$ npm install truffle-flattener -g

$ truffle-flattener <solidity-files> > output.sol

 

为什么不是 Solidity Flattener

truffle-flattener 与 truffle 结合紧密,利用到它的依赖项解析逻辑。

 

限制

如果使用 truffle migrate 部署,它与 truffle-flattener 合并后的文件不一样,在 ethersan 上面 contract verify 是通不过的。

这种情况可以使用 Solidity Flattener 通过 Remix 来部署( 复制使用 cat output.sol | pbcopy )。当然我们通过 truffle-flattener 也可以合并整个合约 通过 Remix 部署。

注意,truffle-flattener 对别名导入不支持(如:import {symbol1 as alias, symbol2} from "filename";)。

 

优势

我们在开发阶段就可以使用这个工具了,方便我们在一个文件中查看依赖的所有合约方法的实现及使用方式。

比如使用 OpenZeppelin 库文件:

// xxx.sol
import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "@openzeppelin/contracts/token/ERC20/ERC20Detailed.sol";

在一个空文件中引入库文件,然后 `truffle-flattener xxx.sol > ERC20Full.sol` 我们就可以得到包含所有依赖项的单个文件。

后面我们就可以通过 import "ERC20Full.sol" 直接使用了。

 

Refer:Solidity的使用难度怎么样

Link:https://www.cnblogs.com/farwish/p/12531556.html

posted on 2020-03-20 14:30  ercom  阅读(1923)  评论(0编辑  收藏  举报