Hardhat
如何使用 Hardhat 編譯外部合約
我想在我的測試中使用 node_modules 中的契約,但我得到:
HardhatError: HH700: Artifact for contract "SomeContract" not found.
這可能是因為它沒有被目錄下的任何文件使用
/contracts
,因此沒有生成工件。有沒有辦法在 node_module 中編譯這些合約?
有兩種解決方案。
- 進口契約
這就是我在我的個人契約庫中所做的
// SPDX-License-Identifier: Unlicense pragma solidity >=0.8.4; import "@prb/math/contracts/PRBMathUD60x18.sol";
正如你所看到的,這一切都是從一個 npm 包中導入外部合約,這樣 Hardhat 就會選擇它並為它生成一個工件。
2.使用hardhat-dependency-compiler
這是一個由 Nick Barry 開發的Hardhat 外掛。安裝它:
yarn add --dev hardhat-dependency-compiler
並將以下內容添加到您的 Hardhat 配置文件中:
dependencyCompiler: { paths: [ 'path/to/external/Contract.sol', ], }
對於它的價值,我更喜歡第一個解決方案。它不那麼冗長,因為我沒有將另一個節點包添加到我的
package.json
文件中。