管理包和打包 原文地址
EthPM是Ethereum一个新的包管理工具,遵循ERC190 spec的智能合约的规则,而且支持Ethereum的很多开发工具
使用EthPM安装包:
$ truffle install
指定版号:
$ truffle install @
*像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 " ], "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
作者:大都废