管理包和打包 原文地址
EthPM是Ethereum一个新的包管理工具,遵循ERC190 spec的智能合约的规则,而且支持Ethereum的很多开发工具
使用EthPM安装包:
$ truffle install <package name>
指定版号:
$ truffle install <package name>@<version>
*像NPM一样的版本号规则
安装依赖包,你可能会跟别人共同开发项目,为了方便别人开发,可以把你的需要安装的包的清单放在 ethpm.json文件中,当有改动时,执行下列命令就可安装依赖包
$ truffle install
已经安装的包会被放在installed_contracts目录中,如果你的项目没有此目录,那么在安装包的时候会自动创建的,像NPM的已安装包目录:node_modules一样,不要轻易的修改,除非有把握。
安装包的使用方式跟NPM的一样:
pragma solidity ^0.4.2;
import "owned/owned.sol";
contract MyContract is owned {
// ...
}
不用使用路径,truffle会自动到EthPM或NPM的包目录中查找
***truffle会优先到EthPM目录中查找 如果找不到再到NPM包目录中查找
打包发布:
如果要发布我们的合约,必须要有一个真实的模拟环境,应为testrpc环境中的address都是指定的
此处我们用ropsten,ropsten是一个在线的模拟环境,有使用限制的
安装必要的插件:
-
$ npm install truffle-hdwallet-provider --save
修改truffle.js
var HDWalletProvider = require("truffle-hdwallet-provider");
// 12-word mnemonic
var mnemonic = "opinion destroy betray ...";
module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 8545,
network_id: "*" // Match any network id
},
ropsten: {
provider: new HDWalletProvider(mnemonic, "https://ropsten.infura.io/"),
network_id: 3 // official id of the ropsten network
}
}
};
编辑环境:ethpm.json
{
"package_name": "adder",
"version": "0.0.3",
"description": "Simple contract to add two numbers",
"authors": [
"Tim Coulter <tim.coulter@consensys.net>"
],
"keywords": [
"ethereum",
"addition"
],
"dependencies": {
"owned": "^0.0.1"
},
"license": "MIT"
}
执行打包命令:
$ truffle publish
打印的信息:
Gathering contracts...
Finding publishable artifacts...
Uploading sources and publishing to registry...
+ adder@0.0.3
为了确保打包发布成功,在发布之前需要清空网络
$ truffle networks --clean