Hardhat3-node-npm-基础版安装-V1

Hardhat3-node-npm-基础版安装-V1


国外可访问:rainweb3知识库
国内可访问:rainweb3知识库

更新日期:2025年10月8日

目录

  1. 环境准备
  2. 新建并初始化项目
  3. 安装过程详解
  4. 项目结构解析
  5. 验证安装与编译
  6. 后续开发建议

1. 环境准备

在开始之前,请确保你的开发环境已正确配置:

  • Node.js 版本v22.18.0
  • npm 版本10.9.3

验证命令:

bash 复制代码
node -v
npm -v

✅ 输出应分别为 v22.18.010.9.3,表示环境满足要求。


2. 新建并初始化项目

步骤 1:启动 Hardhat 初始化流程

在终端中运行以下命令:

bash 复制代码
npx hardhat --init

系统将显示欢迎界面,并引导你完成一系列交互式选择。

📌 图片说明:Hardhat v3.0.6 欢迎界面,顶部为蓝色像素风格的 "Hardhat" 标志。

✅ 显示版本信息:Welcome to Hardhat v3.0.6


步骤 2:选择 Hardhat 版本

系统提示选择使用哪个版本的 Hardhat:

vbnet 复制代码
? Which version of Hardhat would you like to use?
  > Hardhat 3 Beta (recommended for new projects)
  Hardhat 2 (older version)

👉 选择:Hardhat 3 Beta

📌 图片说明:版本选择界面,高亮选中 "Hardhat 3 Beta",推荐用于新项目。


步骤 3:指定项目路径

接下来,系统询问项目初始化路径:

vbnet 复制代码
? Where would you like to initialize the project?
Please provide either a relative or an absolute path:

输入当前目录 . 或其他目标路径。

👉 输入:.

📌 图片说明:路径输入阶段,光标停留在空白行等待输入,用户即将输入 .


步骤 4:选择项目类型

系统提供两种 TypeScript 项目模板:

vbnet 复制代码
? What type of project would you like to initialize?
  A TypeScript Hardhat project using Node Test Runner and Viem
  A TypeScript Hardhat project using Mocha and Ethers.js

👉 选择第一个选项:A TypeScript Hardhat project using Node Test Runner and Viem

这是 Hardhat v3 的现代默认方案,支持更高效的测试和部署流程。

📌 图片说明:项目类型选择界面,已自动选中"Node Test Runner + Viem"选项。


步骤 5:确认是否立即安装依赖

系统会提示你需要运行以下命令来安装依赖:

bash 复制代码
npm install --save-dev "hardhat@3.0.6" "@nomicfoundation/hardhat-toolbox-viem@5.0.0" "@nomicfoundation/hardhat-ignition@3.0.0" "@types/node@22.8.5" "forge-std@foundry-rs/forge-std#v1.9.4" "typescript@5.8.0" "viem@2.30.0"

然后询问:

vbnet 复制代码
Do you want to run it now? (Y/n)

👉 输入:true 或直接按回车(默认 Y)

📌 图片说明:确认是否执行安装命令,用户输入 true,触发 npm 安装流程。


3. 安装过程详解

当用户选择 true 后,Hardhat 自动执行 npm install 命令。

📌 图片说明:npm 安装过程输出日志,显示:

  • 成功添加了 171 个包

  • 耗时约 2 分钟

  • 提示 53 packages are looking for funding

  • 最终提示:✅ Dependencies installed ✨

  • 鼓励用户给 Hardhat GitHub 项目点赞 🌟
    💡 注意:安装过程中会下载多个核心依赖:

  • hardhat@3.0.6:主框架

  • hardhat-toolbox-viem:集成 Viem 支持

  • hardhat-ignition:智能合约部署模块

  • viem@2.30.0:现代 Ethereum SDK

  • typescript@5.8.0:TypeScript 编译器

  • @types/node@22.8.5:Node.js 类型定义

  • forge-std:来自 Foundry 的标准库(用于测试)


4. 项目结构解析

初始化完成后,项目根目录结构如下所示:

lua 复制代码
MY-HARDHAT3/
├── contracts/
│   ├── Counter.sol
│   └── Counter.t.sol
├── ignition/
│   └── modules/
│       └── Counter.ts
├── node_modules/
├── scripts/
│   └── send-op.ts
├── test/
│   └── Counter.ts
├── .gitignore
├── hardhat.config.ts
├── package-lock.json
├── package.json
├── README.md
└── tsconfig.json

📌 图片说明:VS Code 中打开的项目文件夹视图,清晰展示所有顶层文件和目录。

文件与目录详细说明(列表形式)
路径 类型 功能说明
contracts/Counter.sol Solidity 文件 主合约代码,实现计数器功能
contracts/Counter.t.sol Solidity 测试文件 可用于编写 Solidity 单元测试(可选)
ignition/modules/Counter.ts TypeScript 文件 定义 Ignition 部署逻辑,描述如何部署 Counter 合约
scripts/send-op.ts TypeScript 脚本 用于发送交易或部署合约的自动化脚本
test/Counter.ts TypeScript 测试文件 使用 Viem + Node Test Runner 编写集成测试
hardhat.config.ts 配置文件 全局配置项,包括编译器、网络、插件等
package.json JSON 文件 项目元数据和脚本命令定义
tsconfig.json 配置文件 TypeScript 编译器设置,如 target、module 等
.gitignore 文本文件 Git 忽略规则,避免提交 node_modules, artifacts
package-lock.json JSON 文件 锁定依赖版本,保证构建一致性

🔍 补充说明:

  • artifacts/cache/ 目录会在首次编译时自动生成。
  • 所有 .sol 文件都位于 contracts/ 下,支持 .t.sol 扩展名作为测试用合约。
  • ignition/ 是 Hardhat v3 引入的新特性,用于声明式部署。

5. 验证安装与编译

验证安装成功

进入项目目录后,运行:

bash 复制代码
npx hardhat

预期输出:

less 复制代码
Hardhat version 3.0.6

Usage: hardhat [GLOBAL OPTIONS] <TASK> [SUBTASK] [TASK OPTIONS] [--] [TASK ARGUMENTS]

AVAILABLE TASKS:

  build                         Build project
  clean                         Clear the cache and delete all artifacts
  compile                       Build project (alias for build)
  console                       Open a hardhat console
  flatten                       Flatten and print contracts and their dependencies
  node                          Start a JSON-RPC server on top of Hardhat Network
  run                           Run a user-defined script after compiling the 
  ...

✅ 若能看到命令列表,说明 Hardhat 已成功安装。

编译合约

运行以下命令进行编译:

bash 复制代码
npx hardhat compile

控制台输出示例:

csharp 复制代码
Compiling your Solidity contracts...
Compiled 1 Solidity file with solc 0.8.28 (evm target: cancun)

✅ 编译成功意味着:

  • Solidity 语法正确
  • 编译器版本匹配
  • 依赖链完整

6. 后续开发建议

启动本地网络节点
bash 复制代码
npx hardhat node

如图所示:

vbnet 复制代码
Account #0:  0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266 (10000 ETH)
Private Key: 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
...

这将在本地启动一个以太坊网络节点(localhost:8545),可用于测试和部署。

部署合约
bash 复制代码
npx hardhat run scripts/send-op.ts --network localhost

如图所示:

vbnet 复制代码
Compiling your Solidity contracts...

Nothing to compile

Sending transaction using the OP chain type
Sending 1 wei from 0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266 to itself
Estimated L1 gas: 1600n
Sending L2 transaction
Transaction sent successfully

该命令会调用 send-op.ts 脚本,在本地网络上部署 Counter 合约。

运行测试
bash 复制代码
npx hardhat test

如图所示:

sql 复制代码
Compiling your Solidity contracts...

Nothing to compile

Running Solidity tests

  contracts/Counter.t.sol:CounterTest
    ✔ test_InitialValue()
    ✔ test_IncByZero()
    ✔ testFuzz_Inc(uint8) (runs: 256)

  3 passing

Running node:test tests

  Counter
    ✔ Should emit the Increment event when calling the inc() function (644ms)
    ✔ The sum of the Increment events should match the current value (1027ms)

  2 passing (79542ms)

使用 Node Test Runner + Viem 执行 TypeScript 测试。


总结

本文档完整还原了从环境准备 → 初始化流程 → 依赖安装 → 项目结构 → 验证测试的全过程。

所有步骤均经过精确对齐,确保内容与实际操作一致。


相关推荐
程序员鱼皮16 小时前
我的免费 Vibe Coding 教程,爆了!
程序员·ai编程·vibecoding
Rockbean18 小时前
3分钟Solidity: 11.11 抢先交易Front Running
web3·智能合约·solidity
小杨同学4918 小时前
C 语言实战:水果总价计算程序(结构体应用 + 细节优化)
后端·算法·程序员
想用offer打牌19 小时前
Google Code Wiki: AI 代码知识库
后端·程序员·架构
DICOM医学影像1 天前
3. go语言从零实现以太坊客户端 - 查询合约中账户余额
golang·区块链·智能合约·solidity·以太坊·web3.0
Captaincc1 天前
如何在一天内重启你的人生
程序员
文心快码BaiduComate1 天前
0代码手写!体验百度Comate的“魔法”:我造了个会理解情绪的中介层
前端·程序员·前端框架
Captaincc1 天前
Vibe Coding 进阶:非技术人员的生存手册
程序员·vibecoding
京东云开发者2 天前
京东多语言质量解决方案
程序员
京东云开发者2 天前
工程师之夜系列分享第三十九篇:Kafka、RocketMQ、JMQ 存储架构深度对比
程序员