1703879346
1703879347
truffle支持两种包构建:npm和ethpm包。必须知道npm包是什么。先来看ethpm包是什么。ethpm是以太坊的包注册中心。可以在https://www.ethpm.com/发现所有ethpm包。它遵循ERC190(https://github.com/ethereum/EIPs/issues/190)规范发布和使用智能合约包。
1703879348
1703879349
1.通过NPM进行包管理
1703879350
1703879351
truffle默认与npm进行整合,且知道项目node_modules目录(如果存在)。这意味着可以通过npm使用和分配合约或者库,使用户代码对其他人可用以及使其他人的代码对用户可用。还可以使项目中有一个package.json文件。可以在项目中简单安装任何npm包,并在任何JavaScript文件中导入它,但是只有在它包含前面提到的两个目录的情况下才会被称为truffle包。在truffle项目中安装npm包,与在任何node.js app中安装npm包相同。
1703879352
1703879353
2.通过ethpm进行包管理
1703879354
1703879355
在安装ethpm包时,如果没有installed_contracts目录,就创建一个。该目录可以用类似于node_modules目录的方式处理。
1703879356
1703879357
从ethpm安装包几乎和通过NPM安装包一样简单,只要简单运行如下命令:
1703879358
1703879359
1703879360
1703879361
1703879362
还可以安装特定版本的包:
1703879363
1703879364
1703879365
1703879366
1703879367
就像NPM一样,ethpm版本遵循语义版本。项目还可以定义一个ethpm.json文件,它对于npm包来说类似于package.json。为了安装ethpm.json文件中列出的所有相关内容,运行如下代码:
1703879368
1703879369
1703879370
1703879371
1703879372
ethpm.json文件的示例如下:
1703879373
1703879374
1703879375
1703879376
1703879377
1703879378
为truffle创建和发布npm包的过程与创建任何其他npm包相同。学习如何创建和发布ethpm包,请访问http://truffleframework.com/docs/getting_started/packages-ethpm#publishing-your-own-package。无论是否把包当作npm包或者ethpm包发布,都需要运行truffle networks—clean命令。运行该命令时,它会删除所有那些只匹配配置文件中*通配符的网络ID的artifact。之所以这样做,是因为这些地址对于其他也使用这个包的项目来说是非法的,这些网络很有可能是私有的,因为它们只用于开发目的。除非你知道自己在做什么,否则不要忽略这个命令。它不能删除任何以常数形式出现的私有网络artifact,所以需要手动删除。
1703879379
1703879380
3.在合约中使用包的合约
1703879381
1703879382
为了在合约中使用包的合约,可以简单使用Solidity的导入语句。如果import路径不明确或者完全相关,它就告诉truffle从一个有特定名字的包中寻找一个文件。看看这个example-truffle-library的例子(https://github.com/ConsenSys/example-truffle-library):
1703879383
1703879384
1703879385
1703879386
1703879387
由于路径的开头不是“./”,truffle知道要在项目node_modules或者installed_contracts目录中寻找example-truffle-library文件夹,以提供所要求的合约的路径。
1703879388
1703879389
4.在JavaScript代码中使用包的artifact
1703879390
1703879391
如果在JavaScript代码中与一个包的artifact进行交互,仅需要包的.json文件,然后使用truffle-contract把它们转为可用抽象:
1703879392
1703879393
1703879394
1703879395
[
上一页 ]
[ :1.703879346e+09 ]
[
下一页 ]