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.js、verify.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、元数据等。我个人建议:开发阶段用 goerli 或 sepolia 测试网,上线前再改主网。别问我为什么——我见过有人直接在mainnet上测试,一笔交易花了几百美金。
artifacts/ 和 cache/ 是自动生成的,不要手动修改。如果你改了合约,记得重新编译:magma compile。
3.4 知识体系结构图
下面这张图,帮你理清Magma项目的核心逻辑:
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
好了,项目已经创建好了。下一步就是写合约、部署、铸造。别急,我们一步步来。