Solidity Foundry Boilerplate 使用教程
1. 项目的目录结构及介绍
solidity-foundry-boilerplate/
├── github/
│ └── workflows/
├── husky/
├── script/
├── src/
├── test/
├── .env.example
├── .gitattributes
├── .gitignore
├── .solhint.json
├── .solhint-tests.json
├── LICENSE
├── README.md
├── commitlint.config.js
├── foundry.toml
├── natspec-smells.config.js
├── package.json
├── remappings.txt
└── yarn.lock
- github/workflows: 包含GitHub Actions的工作流文件。
- husky: 包含Husky的配置文件,用于Git钩子。
- script: 包含项目的脚本文件。
- src: 包含Solidity智能合约的源代码。
- test: 包含测试文件。
- .env.example: 环境变量示例文件。
- .gitattributes: Git属性配置文件。
- .gitignore: Git忽略配置文件。
- .solhint.json: Solhint配置文件,用于Solidity代码风格检查。
- .solhint-tests.json: Solhint测试配置文件。
- LICENSE: 项目许可证文件。
- README.md: 项目说明文档。
- commitlint.config.js: Commitlint配置文件,用于提交信息规范检查。
- foundry.toml: Foundry配置文件。
- natspec-smells.config.js: NatSpec配置文件,用于文档生成。
- package.json: Node.js项目配置文件。
- remappings.txt: Solidity路径重映射文件。
- yarn.lock: Yarn包管理器锁定文件。
2. 项目的启动文件介绍
项目的启动文件主要位于package.json
中的scripts
部分。以下是一些关键的启动命令:
"scripts": {
"build": "forge build",
"build:optimized": "FOUNDRY_PROFILE=optimized forge build",
"coverage": "forge coverage --report summary --report lcov --match-path 'test/unit/*'",
"deploy:mainnet": "bash -c 'source env && forge script Deploy -vvvvv --rpc-url $MAINNET_RPC --broadcast --chain mainnet --private-key'"
}
- build: 使用Forge构建项目。
- build:optimized: 使用优化配置构建项目。
- coverage: 生成测试覆盖率报告。
- deploy:mainnet: 在主网上部署合约。
3. 项目的配置文件介绍
foundry.toml
Foundry的配置文件,包含项目的构建和部署配置。
[profile.default]
src = "src"
test = "test"
out = "out"
package.json
Node.js项目的配置文件,包含项目的依赖、脚本和其他元数据。
{
"name": "solidity-foundry-boilerplate",
"version": "1.0.0",
"description": "Production ready Solidity boilerplate with Foundry",
"homepage": "https://github.com/defi-wonderland/solidity-foundry-boilerplate#readme",
"repository": {
"type": "git",
"url": "git+https://github.com/defi-wonderland/solidity-foundry-boilerplate.git"
},
"license": "MIT",
"author": "Wonderland",
"scripts": {
"build": "forge build",
"build:optimized": "FOUNDRY_PROFILE=optimized forge build",
"coverage": "forge coverage --report summary --report lcov --match-path 'test/unit/*'",
"deploy:mainnet": "bash -c 'source env && forge script Deploy -vvvvv --rpc-url $MAINNET_RPC --broadcast --chain mainnet --private-key'"
}
}
.solhint.json
Solidity代码风格检查配置文件。
{
"rules": {
"avoid-sha3": "warn",
"avoid-suicide": "error",
"avoid-throw