溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解析truffle.js配置文件

發(fā)布時間:2021-12-14 09:22:05 來源:億速云 閱讀:236 作者:柒染 欄目:互聯(lián)網(wǎng)科技

今天就跟大家聊聊有關如何解析truffle.js配置文件,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

truffle.js是以太坊開發(fā)框架truffle的配置文件,下面介紹truffle.js 配置文件的位置、windows下的命名沖突解決方案以及各種配置選項。

truffle配置文件位置

truffle項目的配置文件位于項目的根目錄下,名稱為truffle.js。這個文件是一個Javascript腳本,可以在其中執(zhí)行任意 必要的代碼來創(chuàng)建適合你的配置。truffle.js必須導出一個表征你的項目配置的對象,例如:

module.exports = {
  networks: {
    development: {
      host: "127.0.0.1",
      port: 8545,
      network_id: "*" // 可匹配任意網(wǎng)絡
    }
  }
};

在這個創(chuàng)建truffle項目時生成的默認配置文件中,聲明了一個名為development的以太坊節(jié)點,該節(jié)點在地址127.0.0.1:8545監(jiān)聽。

WINDOWS下的命名沖突解析

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

可以有幾種方法解決這一沖突:

  • 輸入truffle.cmd全稱,例如:

D:\ez-dapp> truffle.cmd compile
  • 修改PATHEXT環(huán)境變量,將.js后綴從可執(zhí)行后綴中刪除。

  • 將truffle.js更名為truffle-config.js。

  • 使用不會產(chǎn)生沖突的Windows的power Shell或Git BASH。

網(wǎng)絡節(jié)點選項

指定在部署合約、發(fā)送交易時使用哪個網(wǎng)絡節(jié)點。當在某個特定的網(wǎng)絡節(jié)點上編譯或部署合約時,合約會緩存起來方便后續(xù)使用。 當truffle的合約抽象層檢查到你連到某個網(wǎng)絡節(jié)點時,它會使用這個這個網(wǎng)絡節(jié)點上原有的緩存合約來簡化部署流程。

下述的networks對象,通過一個網(wǎng)絡名做為配置的鍵,值對應定義了其網(wǎng)絡參數(shù)。networks的對應選項不是必須的,但如果一旦指定, 每個網(wǎng)絡必須定義一個對應的network_id。如果希望聲明一個默認網(wǎng)絡,可以通過將netword_id的值標記為default來實現(xiàn), 當沒有匹配到其它的網(wǎng)絡時,就會使用默認網(wǎng)絡。需要注意的是整個配置中,應該有且僅有一個default的網(wǎng)絡。一般來說, 默認網(wǎng)絡主要用于開發(fā),配置,合約等數(shù)據(jù)沒有長期保存的需要,網(wǎng)絡ID也會因TestRPC的重啟而頻繁改變時。

網(wǎng)絡節(jié)點名稱在通過用戶接口調(diào)用時使用。例如,在部署合約時使用--network選項指定要使用的網(wǎng)絡節(jié)點:

$ truffle migrate --network live

live是truffle.js中定義的某個網(wǎng)絡節(jié)點:

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

對于每一個配置的網(wǎng)絡節(jié)點,在未明確設置以下交易參數(shù)時,使用其默認值:

  • gas:部署合約的油耗上限,默認值:4712388

  • gasPrice:部署合約時的油價,默認值:100000000000 wei,即100 shannon

  • from:執(zhí)行遷移腳本時使用的賬戶,默認使用節(jié)點旳第一個賬戶

  • provider:默認的provider使用host和port選項構造:new Web3.providers.HttpProvider("http://host:port")

對于配置的每個網(wǎng)絡節(jié)點,你可以設置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下使用絕對 路徑,記得轉(zhuǎn)義反斜杠,例如: C:\\Users\\Username\\output。

測試框架選項:MOCHA

使用mocha選項傳入MochaJS測試框架需要的配置選項,例如:

mocha: {
  useColors: true
}

solidity編譯選項:SOLC

使用solc選項傳入solity編譯器需要的選項,例如:

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

看完上述內(nèi)容,你們對如何解析truffle.js配置文件有進一步的了解嗎?如果還想了解更多知識或者相關內(nèi)容,請關注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI