truffle.js是以太坊开发框架truffle的配置文件,本手册介绍truffle.js 配置文件的位置、windows下的命名冲突解决方案以及各类配置选项。html
若是你但愿立刻开始学习以太坊DApp开发,能够访问汇智网提供的出色的在线互动教程:git
truffle项目的配置文件位于项目的根目录下,名称为truffle.js。这个文件是一个Javascript脚本,能够在其中执行任意 必要的代码来建立适合你的配置。truffle.js必须导出一个表征你的项目配置的对象,例如:github
module.exports = { networks: { development: { host: "127.0.0.1", port: 8545, network_id: "*" // 可匹配任意网络 } } };
在这个建立truffle项目时生成的默认配置文件中,声明了一个名为development
的以太坊节点,该节点在地址127.0.0.1:8545
监听。web
在Windows命令行使用truffle时,默认的配置文件名与truffle冲突 —— 当你在命令行输入truffle时,windows实际上会调用项目目录下 的配置脚本truffle.js。json
能够有几种方法解决这一冲突:windows
D:\ez-dapp> truffle.cmd compile
.js
后缀从可执行后缀中删除。truffle-config.js
。指定在部署合约、发送交易时使用哪一个网络节点。当在某个特定的网络节点上编译或部署合约时,合约会缓存起来方便后续使用。 当truffle的合约抽象层检查到你连到某个网络节点时,它会使用这个这个网络节点上原有的缓存合约来简化部署流程。缓存
下述的networks对象,经过一个网络名作为配置的键,值对应定义了其网络参数。networks的对应选项不是必须的,但若是一旦指定, 每一个网络必须定义一个对应的network_id。若是但愿声明一个默认网络,能够经过将netword_id的值标记为default来实现, 当没有匹配到其它的网络时,就会使用默认网络。须要注意的是整个配置中,应该有且仅有一个default的网络。通常来讲, 默认网络主要用于开发,配置,合约等数据没有长期保存的须要,网络ID也会因TestRPC的重启而频繁改变时。网络
网络节点名称在经过用户接口调用时使用。例如,在部署合约时使用--network
选项指定要使用的网络节点:app
$ truffle migrate --network live
live
是truffle.js中定义的某个网络节点:框架
networks: { development: { host: "127.0.0.1", port: 8545, network_id: "*" // match any network }, live: { host: "178.25.19.88", // Random IP for example purposes (do not use) port: 80, network_id: 1, // Ethereum public network // optional config values: // gas // gasPrice // from - default address to use for any transaction Truffle makes during migrations // provider - web3 provider instance Truffle should use to talk to the Ethereum network. // - function that returns a web3 provider instance (see below.) // - if specified, host and port are ignored. } }
对于每个配置的网络节点,在未明确设置如下交易参数时,使用其默认值:
new Web3.providers.HttpProvider("http://host:port")
对于配置的每一个网络节点,你能够设置provider或host/port,但不能同时使用。若是你须要一个 HTTP provider,推荐使用host/port选项,若是须要一个定制的provider,例如HDWalletProvider, 那么必须使用provider选项。
合约编译的默认输出目录是项目根目录下的./build/contracts,不过这一点能够在配置文件中 使用contracts_build_directory配置项进行修改。
例如,你能够将合约编译结果存放在项目根目录的./output/contracts目录下:
module.exports = { contracts_build_directory: "./output", networks: { development: { host: "127.0.0.1", port: 8545, network_id: "*", } } };
编译生成的合约构件也能够不放在项目目录下,例如:
module.exports = { contracts_build_directory: "../../../output", networks: { development: { host: "127.0.0.1", port: 8545, network_id: "*", } } };
固然你也可使用绝对路径,不过咱们不推荐这么作,由于若是在其余机器上 构建你的项目,可能会找不到你设定的绝对路径。若是在windows下使用绝对 路径,记得转义反斜杠,例如: C:\\Users\\Username\\output
。
使用mocha选项传入MochaJS测试框架须要的配置选项,例如:
mocha: { useColors: true }
关于mochajs的配置内容,请查阅其官方文档。
使用solc选项传入solity编译器须要的选项,例如:
solc: { optimizer: { enabled: true, runs: 200 } }
关于solidity编译器选项的详细内容,请查阅编译器输入与输出的JSON描述。