博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
truffle.js配置文件
阅读量:6480 次
发布时间:2019-06-23

本文共 3145 字,大约阅读时间需要 10 分钟。

hot3.png

truffle.js是以太坊开发框架truffle的配置文件,本手册介绍truffle.js 配置文件的位置、windows下的命名冲突解决方案以及各种配置选项。

如果你希望马上开始学习以太坊DApp开发,可以访问汇智网提供的出色的在线互动教程:

truffle配置文件位置

truffle项目的配置文件位于项目的根目录下,名称为truffle.js。这个文件是一个Javascript脚本,可以在其中执行任意 必要的代码来创建适合你的配置。truffle.js必须导出一个表征你的项目配置的对象,例如:

module.exports = {  networks: {    development: {      host: "127.0.0.1",      port: 8545,      network_id: "*" // 可匹配任意网络    }  }};

在这个创建truffle项目时生成的默认配置文件中,声明了一个名为development的以太坊节点,该节点在地址127.0.0.1:8545监听。

WINDOWS下的命名冲突解析

在Windows命令行使用truffle时,默认的配置文件名与truffle冲突 —— 当你在命令行输入truffle时,windows实际上会调用项目目录下 的配置脚本truffle.js。

可以有几种方法解决这一冲突:

  • 输入truffle.cmd全称,例如:
D:\ez-dapp> truffle.cmd compile
  • 修改PATHEXT环境变量,将.js后缀从可执行后缀中删除。
  • 将truffle.js更名为truffle-config.js
  • 使用不会产生冲突的Windows的power Shell或Git BASH。

网络节点选项

指定在部署合约、发送交易时使用哪个网络节点。当在某个特定的网络节点上编译或部署合约时,合约会缓存起来方便后续使用。 当truffle的合约抽象层检查到你连到某个网络节点时,它会使用这个这个网络节点上原有的缓存合约来简化部署流程。

下述的networks对象,通过一个网络名做为配置的键,值对应定义了其网络参数。networks的对应选项不是必须的,但如果一旦指定, 每个网络必须定义一个对应的network_id。如果希望声明一个默认网络,可以通过将netword_id的值标记为default来实现, 当没有匹配到其它的网络时,就会使用默认网络。需要注意的是整个配置中,应该有且仅有一个default的网络。一般来说, 默认网络主要用于开发,配置,合约等数据没有长期保存的需要,网络ID也会因TestRPC的重启而频繁改变时。

网络节点名称在通过用户接口调用时使用。例如,在部署合约时使用--network选项指定要使用的网络节点:

$ 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.  }}

对于每一个配置的网络节点,在未明确设置以下交易参数时,使用其默认值:

  • gas:部署合约的油耗上限,默认值:4712388
  • gasPrice:部署合约时的油价,默认值:100000000000 wei,即100 shannon
  • from:执行迁移脚本时使用的账户,默认使用节点旳第一个账户
  • provider:默认的provider使用host和port选项构造:new Web3.providers.HttpProvider("http://host:port")

对于配置的每个网络节点,你可以设置provider或host/port,但不能同时使用。如果你需要一个 HTTP provider,推荐使用host/port选项,如果需要一个定制的provider,例如HDWalletProvider, 那么必须使用provider选项。

合约编译输出目录选项:CONTRACTS_BUILD_DIRECTORY

合约编译的默认输出目录是项目根目录下的./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

使用mocha选项传入MochaJS测试框架需要的配置选项,例如:

mocha: {  useColors: true}

关于mochajs的配置内容,请查阅其。

solidity编译选项:SOLC

使用solc选项传入solity编译器需要的选项,例如:

solc: {  optimizer: {    enabled: true,    runs: 200  }}

关于solidity编译器选项的详细内容,请查阅。

转载于:https://my.oschina.net/u/3794778/blog/1805772

你可能感兴趣的文章
分布式缓存Redis使用以及原理
查看>>
Activity竟然有两个onCreate方法,可别用错了
查看>>
Linux经常使用命令(十六) - whereis
查看>>
Linux五种IO模型
查看>>
Bootstrap技术: 模式对话框的使用
查看>>
小知识,用myeclipes找jar
查看>>
in-list expansion
查看>>
设计原则(四):接口隔离原则
查看>>
基于react的滑动图片验证码组件
查看>>
【学习笔记】阿里云Centos7.4下配置Nginx
查看>>
VuePress手把手一小時快速踩坑
查看>>
学习constructor和instanceof的区别
查看>>
Vijos P1881 闪烁的星星
查看>>
ABP理论学习之领域服务
查看>>
Qt 控制watchdog app hacking
查看>>
让所有IE支持HTML5的解决方案
查看>>
RDD之五:Key-Value型Transformation算子
查看>>
percona 5.7.11root初始密码设置
查看>>
Cognitive Security的异常检测技术
查看>>
Impress.js上手 - 抛开PPT、制作Web 3D幻灯片放映
查看>>