3. 开发环境搭建:Node.js与npm安装、Hardhat框架安装与初始化、VS Code配置Solidity插件、Git版本控制基础

好,咱们正式开始动手了。这一章我带你搭好开发环境。说实话,很多新手在这一步就被劝退了——装个东西报一堆错,心态直接崩掉。别担心,我会把踩过的坑都指出来。

3.1 Node.js 与 npm 安装

Node.js 是整个开发环境的地基。Hardhat、前端工具、各种库,全得靠它跑起来。

下载安装

去官网 nodejs.org 下载 LTS 版本。我个人习惯用 LTS,稳定,不会突然搞出兼容性问题。

注意:别下载 Current 版本。我去年手贱试过一次,结果某个依赖包不兼容,排查了半天。老老实实用 LTS。

安装过程很简单,一路 Next 就行。装完后打开终端(Windows 用 PowerShell 或 CMD,Mac/Linux 用 Terminal),验证一下:

node -v
npm -v

能看到版本号,说明装好了。比如我这边显示的是 v18.17.09.6.7

npm 镜像配置

为什么要配?因为 npm 默认的源在国外,下载速度你懂的。我曾经等一个包下载等了五分钟,最后超时报错。后来学乖了,换成淘宝镜像:

npm config set registry https://registry.npmmirror.com

配完之后,下载速度飞起。嗯,这里要注意,有些企业内网可能用不了镜像,那就得用 VPN 了。

3.2 Hardhat 框架安装与初始化

Hardhat 是目前最流行的 Solidity 开发框架。我刚开始做 NFT 项目时用的 Truffle,后来发现 Hardhat 的调试体验好太多了,果断切换。

全局安装 Hardhat

打开终端,执行:

npm install -g hardhat

-g 是全局安装,这样你可以在任何目录下使用 hardhat 命令。

初始化项目

创建一个新文件夹,比如 nft-demo,然后进去:

mkdir nft-demo
cd nft-demo
npx hardhat init

这时候会出现一个交互式菜单,选 Create a JavaScript project。为什么选 JS 而不是 TS?因为新手用 JS 更简单,少配置一堆类型定义。等你熟练了再换 TS。

小技巧:初始化过程中会问你是否安装依赖,选 Yes。不然你后面还得手动装。

初始化完成后,目录结构是这样的:

nft-demo/
├── contracts/        # 存放 Solidity 合约
├── scripts/          # 部署脚本
├── test/             # 测试文件
├── hardhat.config.js # 配置文件
└── package.json      # 依赖管理

我个人习惯把 hardhat.config.js 打开看一眼,确认网络配置和 Solidity 版本。默认是 0.8.19,够用。

3.3 VS Code 配置 Solidity 插件

写 Solidity 代码,没有语法高亮和自动补全,那效率太低了。VS Code 是首选编辑器,免费又好用。

安装插件

打开 VS Code,左侧扩展面板搜索:

  • Solidity + Hardhat:这个插件集成了语法高亮、代码补全、编译错误提示。我一直在用,很稳定。
  • Prettier:代码格式化工具。团队协作时,统一代码风格很重要。

装完之后,打开一个 .sol 文件,你会看到代码有了颜色,写起来舒服多了。

配置代码片段

为了偷懒,我给自己配了几个常用代码片段。比如输入 nft 自动补全一个 ERC721 合约框架。方法是在 VS Code 里按 Ctrl+Shift+P,搜 Configure User Snippets,选 solidity.json,然后粘贴:

{
  "ERC721 Template": {
    "prefix": "nft",
    "body": [
      "// SPDX-License-Identifier: MIT",
      "pragma solidity ^0.8.19;",
      "",
      "import \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";",
      "",
      "contract ${1:MyNFT} is ERC721 {",
      "    constructor() ERC721(\"${2:MyNFT}\", \"${3:MNFT}\") {}",
      "}"
    ],
    "description": "ERC721 合约模板"
  }
}

这样每次新建合约,输入 nft 再按 Tab,模板就出来了。省时间。

3.4 Git 版本控制基础

Git 是程序员的后悔药。你改错了代码?回滚。项目崩了?回滚。我见过太多人写代码不 commit,最后改了一堆东西找不回来,只能重写。

初始化仓库

在项目根目录执行:

git init

这会创建一个隐藏的 .git 文件夹,用来记录版本历史。

配置用户信息

第一次用 Git 需要告诉它你是谁:

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

这个信息会出现在每次提交记录里。团队协作时,别人就知道代码是谁改的。

添加 .gitignore 文件

有些文件不需要被 Git 管理,比如 node_modules、编译产物。在项目根目录创建 .gitignore,写入:

node_modules/
artifacts/
cache/
.env

我曾经犯过一个错,把 node_modules 提交到了仓库,结果项目体积直接几百兆,克隆下来慢得要死。后来就长记性了。

第一次提交

把当前所有文件添加到暂存区,然后提交:

git add .
git commit -m "初始化项目:Hardhat + NFT 开发环境"

提交信息要写清楚,方便以后回溯。别写 update 这种没意义的描述。

核心习惯:每完成一个功能点,就 commit 一次。比如「添加了 ERC721 合约」、「写了部署脚本」。这样哪天改崩了,可以精准回滚到上一个正常版本。

查看状态

随时可以用 git status 看看哪些文件被改了。我几乎每写几行代码就跑一下这个命令,心里有底。

好了,环境搭完了。下一章咱们开始写真正的 NFT 合约。你想想看,从零到能部署合约,其实也就几步的事。别急,慢慢来。