truffle.js配置文件

truffle.js是以太坊開發框架truffle的配置文件,本手冊介紹truffle.js 配置文件的位置、windows下的命名衝突解決方案以及各類配置選項。html

若是你但願立刻開始學習以太坊DApp開發,能夠訪問匯智網提供的出色的在線互動教程:git

truffle配置文件位置

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下的命名衝突解析

在Windows命令行使用truffle時,默認的配置文件名與truffle衝突 —— 當你在命令行輸入truffle時,windows實際上會調用項目目錄下 的配置腳本truffle.js。json

能夠有幾種方法解決這一衝突:windows

  • 輸入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選項指定要使用的網絡節點: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.
  }
}

對於每個配置的網絡節點,在未明確設置如下交易參數時,使用其默認值:

  • 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描述

相關文章
相關標籤/搜索