truffle.js框架的配置文件

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

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

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编译器选项的详细内容,请查阅编译器输入与输出的JSON描述

如果你希望高效的学习以太坊DApp开发,可以访问汇智网提供的最热门在线互动教程:

其他更多内容也可以访问这个以太坊博客

相关文章
|
2月前
|
数据采集 人工智能 自然语言处理
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
Midscene.js 是一款基于 AI 技术的 UI 自动化测试框架,通过自然语言交互简化测试流程,支持动作执行、数据查询和页面断言,提供可视化报告,适用于多种应用场景。
548 1
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
|
3月前
|
缓存 监控 JavaScript
Vue.js 框架下的性能优化策略与实践
Vue.js 框架下的性能优化策略与实践
|
3月前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
66 2
|
3月前
|
缓存 负载均衡 JavaScript
构建高效后端服务:Node.js与Express框架实践
在数字化时代的浪潮中,后端服务的重要性不言而喻。本文将通过深入浅出的方式介绍如何利用Node.js及其强大的Express框架来搭建一个高效的后端服务。我们将从零开始,逐步深入,不仅涉及基础的代码编写,更会探讨如何优化性能和处理高并发场景。无论你是后端新手还是希望提高现有技能的开发者,这篇文章都将为你提供宝贵的知识和启示。
|
3月前
|
JavaScript 前端开发 开发者
JavaScript框架React vs. Vue:一场性能与易用性的较量
JavaScript框架React vs. Vue:一场性能与易用性的较量
67 0
|
3月前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端框架
【10月更文挑战第34天】在数字化时代,后端开发如同一座桥梁,连接着用户界面与数据处理的两端。本文将通过Node.js这一轻量级、高效的平台,带领读者领略后端框架的魅力。我们将从基础概念出发,逐步深入到实战应用,最后探讨如何通过代码示例来巩固学习成果,使读者能够在理论与实践之间架起自己的桥梁。
|
3月前
|
Web App开发 JavaScript 前端开发
构建高效后端服务:Node.js与Express框架的实践
【10月更文挑战第33天】在数字化时代的浪潮中,后端服务的效率和可靠性成为企业竞争的关键。本文将深入探讨如何利用Node.js和Express框架构建高效且易于维护的后端服务。通过实践案例和代码示例,我们将揭示这一组合如何简化开发流程、优化性能,并提升用户体验。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用技巧。
|
3月前
|
Web App开发 JavaScript 中间件
构建高效后端服务:Node.js与Express框架的融合之道
【10月更文挑战第31天】在追求快速、灵活和高效的后端开发领域,Node.js与Express框架的结合如同咖啡遇见了奶油——完美融合。本文将带你探索这一组合如何让后端服务搭建变得既轻松又充满乐趣,同时确保你的应用能够以光速运行。
64 0
|
3月前
|
JavaScript 中间件 API
Node.js进阶:Koa框架下的RESTful API设计与实现
【10月更文挑战第28天】本文介绍了如何在Koa框架下设计与实现RESTful API。首先概述了Koa框架的特点,接着讲解了RESTful API的设计原则,包括无状态和统一接口。最后,通过一个简单的博客系统示例,详细展示了如何使用Koa和koa-router实现常见的CRUD操作,包括获取、创建、更新和删除文章。
96 4
|
4月前
|
Web App开发 JavaScript 中间件
构建高效后端服务:Node.js与Express框架的完美结合
【10月更文挑战第21天】本文将引导你走进Node.js和Express框架的世界,探索它们如何共同打造一个高效、可扩展的后端服务。通过深入浅出的解释和实际代码示例,我们将一起理解这一组合的魅力所在,并学习如何利用它们来构建现代Web应用。
114 1

热门文章

最新文章

  • 1
    当面试官再问我JS闭包时,我能答出来的都在这里了。
    49
  • 2
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    29
  • 3
    Node.js 中实现多任务下载的并发控制策略
    34
  • 4
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    26
  • 5
    【JavaScript】深入理解 let、var 和 const
    49
  • 6
    【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
    47
  • 7
    【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
    57
  • 8
    【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
    57
  • 9
    如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
    72
  • 10
    【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
    57