110 以太坊 ethereum hardhat : 编写任务和脚本

介绍
编写任务
编写脚本
在任务和脚本之间进行选择
hardhat Tutorials , hardhat 教程
Contact 联系方式

• 介绍

Hardhat 的核心是一个任务运行器,可让您自动化您的开发工作流程。它带有一些内置任务,例如 compiletest,但您也可以添加自己的自定义任务。

本指南将向您展示如何使用任务和脚本扩展 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 时会打印出来。

第三个参数是运行任务时执行的异步函数。它接收两个参数:

  1. 带有任务参数的对象。我们还没有定义任何东西。
  2. 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 的情况下运行它们,请阅读 本指南

• 在任务和脚本之间进行选择

在任务和脚本之间进行选择取决于您。如果您不确定应该使用哪一个,您可能会发现这很有用:

  1. 如果你想自动化一个不需要参数的工作流,脚本可能是最好的选择。

  2. 如果您要自动化的工作流程需要一些参数,请考虑创建一个安全帽任务。

  3. 如果您需要从另一个具有自己 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 : [email protected]

猜你喜欢

转载自blog.csdn.net/wx468116118/article/details/125903399