3、创建第一个Magma项目:使用CLI初始化项目,理解项目目录结构

好了,到了真正动手的时候了。

前面两章我们聊了Magma是什么,也搭好了环境。现在,我们要创建第一个Magma项目。这一步其实很简单,但很多人会忽略一个关键点——项目目录结构。我见过太多人,项目跑起来了,但文件放得乱七八糟,后面维护起来想哭。

3.1 使用CLI初始化项目

打开你的终端,找个干净的目录。我个人习惯在 ~/projects 下工作。执行下面这条命令:

magma init my-first-nft

嗯,就这么简单。你会看到终端输出一堆信息,大概长这样:

✨  Creating a new Magma project in /Users/you/projects/my-first-nft
📦  Installing dependencies...
✅  Project initialized successfully!
🎉  Ready to build your NFT project!

为什么会这么快?因为Magma帮你把脚手架、依赖、配置文件一次性搞定了。我记得第一次用的时候,还以为是报错了——怎么没让我选模板?后来才发现,Magma的设计哲学就是「零配置启动」。你想想看,少做选择,少犯错。

💡 小提示: 如果你在初始化时遇到权限问题,试试在前面加 sudo。但我个人不建议这么做——最好用 nvm 管理Node版本,避免全局权限冲突。

3.2 项目目录结构详解

初始化完成后,进入项目目录看看:

cd my-first-nft
ls -la

你会看到这样的结构:

my-first-nft/
├── contracts/          # 智能合约目录
│   ├── MyNFT.sol       # 默认的NFT合约
│   └── migrations/     # 部署脚本
├── scripts/            # 脚本目录
│   ├── deploy.js       # 部署脚本
│   └── mint.js         # 铸造脚本
├── test/               # 测试目录
│   └── MyNFT.test.js   # 合约测试
├── artifacts/          # 编译产物(自动生成)
├── cache/              # 缓存文件(自动生成)
├── magma.config.js     # Magma配置文件
├── package.json        # 项目依赖
├── hardhat.config.js   # Hardhat配置(Magma基于Hardhat)
└── .env.example        # 环境变量示例

这个结构,说白了就是Magma团队帮你规划好的「最佳实践」。我刚开始做NFT项目时,文件放得乱七八糟,合约、脚本、测试混在一起。后来用了Magma,才明白什么叫「规范」。

3.3 核心目录解读

contracts/ —— 你的NFT灵魂所在

所有智能合约都放在这里。默认的 MyNFT.sol 是一个标准的ERC-721合约。你可以直接修改它,也可以新建文件。我个人习惯按功能拆分:

  • MyNFT.sol —— 主合约
  • MyNFTMarket.sol —— 市场合约(如果有)
  • libraries/ —— 工具库

scripts/ —— 自动化操作

部署、铸造、批量操作……所有脚本放这里。默认给了两个:

  • deploy.js —— 部署合约到链上
  • mint.js —— 铸造NFT

你可以自己加,比如 batch-mint.jsverify.js 等等。

test/ —— 别偷懒,测试很重要

我曾经因为没写测试,上线后才发现合约有个bug——铸造时gas计算错了。嗯,那次亏了不少钱。所以,测试目录一定要用起来。Magma默认集成了Mocha和Chai,你直接写就行。

magma.config.js —— 项目的「遥控器」

这个文件很重要。打开看看:

module.exports = {
  network: 'goerli',        // 默认测试网
  gasLimit: 3000000,        // Gas上限
  metadata: {
    baseURI: 'ipfs://',     // 元数据基础URI
    name: 'My NFT',         // 集合名称
    symbol: 'MNFT'          // 集合符号
  }
};

这里你可以配置网络、Gas、元数据等。我个人建议:开发阶段用 goerlisepolia 测试网,上线前再改主网。别问我为什么——我见过有人直接在mainnet上测试,一笔交易花了几百美金。

⚠️ 警告: artifacts/cache/ 是自动生成的,不要手动修改。如果你改了合约,记得重新编译:magma compile

3.4 知识体系结构图

下面这张图,帮你理清Magma项目的核心逻辑:

Magma项目核心结构 my-first-nft/ contracts/ scripts/ test/ config/ artifacts/ 智能合约文件 MyNFT.sol + 部署脚本 自动化脚本 deploy.js / mint.js 单元测试 Mocha + Chai 项目配置文件 magma.config.js 编译产物 自动生成 核心工作流: 写合约 → 编译 → 测试 → 部署 → 铸造

3.5 验证项目是否初始化成功

执行下面这条命令,看看项目能不能正常编译:

magma compile

如果看到类似这样的输出,说明一切正常:

Compiling 1 contract with Solidity 0.8.17
Compilation finished successfully

如果报错,别慌。我遇到过最常见的问题是:Node版本太低。Magma要求Node >= 16。用 node -v 检查一下,不行就升级。

📌 核心要点:
  • magma init 一键创建项目,零配置启动
  • 目录结构是Magma团队的最佳实践,别乱改
  • contracts/ 放合约,scripts/ 放脚本,test/ 放测试
  • magma.config.js 是项目的核心配置
  • 每次修改合约后,记得 magma compile

好了,项目已经创建好了。下一步就是写合约、部署、铸造。别急,我们一步步来。


专注资料整理