Hardhat

如何使用 Hardhat 編譯外部合約

  • March 21, 2022

我想在我的測試中使用 node_modules 中的契約,但我得到: HardhatError: HH700: Artifact for contract "SomeContract" not found.

這可能是因為它沒有被目錄下的任何文件使用/contracts,因此沒有生成工件。有沒有辦法在 node_module 中編譯這些合約?

有兩種解決方案。

  1. 進口契約

這就是我在我的個人契約庫中所做的

// 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文件中。

引用自:https://ethereum.stackexchange.com/questions/114376