• 介绍
• 编写任务
• 编写脚本
• 在任务和脚本之间进行选择
• hardhat Tutorials , hardhat 教程
• Contact 联系方式
• 介绍
Hardhat 的核心是一个任务运行器,可让您自动化您的开发工作流程。它带有一些内置任务,例如 compile
和 test
,但您也可以添加自己的自定义任务。
本指南将向您展示如何使用任务和脚本扩展 Hardhat 的功能。它假定您已经初始化了一个示例项目。如果您还没有这样做,请先阅读 本指南。
• 编写任务
让我们编写一个打印可用帐户列表的非常简单的任务,并探索它是如何工作的。
复制此任务定义并将其粘贴到您的安全帽配置文件中:
task("accounts", "Prints the list of accounts", async (taskArgs, hre) => {
const accounts = await hre.ethers.getSigners();
for (const account of accounts) {
console.log(account.address);
}
});
现在你应该可以运行它了:
npx hardhat accounts
我们正在使用 task
函数来定义我们的新任务。它的第一个参数是任务的名称,它是我们在命令行中用来运行它的名称。第二个参数是任务的描述,当你使用 npx hardhat help
时会打印出来。
第三个参数是运行任务时执行的异步函数。它接收两个参数:
- 带有任务参数的对象。我们还没有定义任何东西。
- Hardhat Runtime Environment 或HRE,包含Hardhat 及其插件的所有功能。您还可以在任务执行期间找到注入到“全局”命名空间中的所有属性。
您可以在此功能中自由地做任何您想做的事情。在这种情况下,我们使用 ethers.getSigners()
来获取所有配置的帐户并打印它们的每个地址。
您可以将参数添加到您的任务中,Hardhat 将为您处理它们的解析和验证。
您还可以覆盖现有任务,这允许您更改安全帽不同部分的工作方式。
要了解有关任务的更多信息,请阅读 本指南。
• 编写脚本
您可以编写脚本并使用 Hardhat 运行它们。他们可以利用 Hardhat Runtime Environment 来访问所有 Hardhat 的功能,包括任务运行器。
这是一个与我们的 accounts
任务执行相同操作的脚本。使用以下内容创建一个 accounts.js
文件:
async function main() {
const accounts = await ethers.getSigners();
for (const account of accounts) {
console.log(account.address);
}
}
main().catch((error) => {
console.error(error);
process.exit(1);
});
并使用内置的 run
任务运行它:
npx hardhat run accounts.js
请注意,我们使用的是 ethers
而没有导入它。这是可能的,因为在 Hardhat Runtime Environment 中可用的所有内容在脚本中也是全局可用的。
要了解有关脚本的更多信息,包括如何在不使用 Hardhat 的 CLI 的情况下运行它们,请阅读 本指南。
• 在任务和脚本之间进行选择
在任务和脚本之间进行选择取决于您。如果您不确定应该使用哪一个,您可能会发现这很有用:
-
如果你想自动化一个不需要参数的工作流,脚本可能是最好的选择。
-
如果您要自动化的工作流程需要一些参数,请考虑创建一个安全帽任务。
-
如果您需要从另一个具有自己 CLI 的工具访问安全帽运行时环境,例如
jest
或 [ndb
](https://www.npmjs .com/package/ndb),你应该写一个脚本。确保显式导入 Hardhat 运行时环境,以便使用该工具而不是 Hardhat 的 CLI 运行。
4.如果你觉得Hardhat的参数处理达不到你的要求,你应该写一个脚本。只需显式导入 Hardhat运行时环境,使用您自己的参数解析逻辑(例如使用 yargs
),然后 [将其作为独立的 Node.js 脚本运行](。 ./advanced/scripts#standalone-scripts:-using-hardhat-as-a-library)。
• hardhat Tutorials , hardhat 教程
CN 中文 Github hardhat 教程 : github.com/565ee/hardhat_CN
CN 中文 CSDN hardhat 教程 : blog.csdn.net/wx468116118
EN 英文 Github hardhat Tutorials : github.com/565ee/hardhat_EN
• Contact 联系方式
Homepage : 565.ee
微信公众号 : wx468116118
微信 QQ : 468116118
GitHub : github.com/565ee
CSDN : blog.csdn.net/wx468116118
Email : 468116118@qq.com