本文档解释了 Fuel Orchestrator (forc) 工具如何创建和初始化新的 Sway 项目。它涵盖了初始化过程、项目类型以及生成的项目结构。有关从模板创建项目的信息,请参见模板。
forc init 命令在现有目录中创建新的 Sway 项目,而相关的 forc new 命令首先创建一个目录,然后执行初始化。这两个命令都设置了基本的项目结构,包含开始开发 Sway 程序所需的文件。
来源:forc/src/ops/forc_init.rs45-178 forc/src/cli/commands/init.rs1-45
forc init 命令提供多种项目初始化选项
| 选项 | 描述 |
|---|---|
--path | 要初始化项目的目录(默认:当前目录) |
--contract | 创建合约项目(如果未指定类型,则为默认值) |
--script | 创建脚本项目 |
--predicate | 创建谓词项目 |
--library | 创建库项目 |
--workspace | 创建工作区 |
--name | 设置包名(默认:目录名) |
来源:forc/src/cli/commands/init.rs15-39
Sway 支持多种程序类型,每种类型都有不同的目的和结构。类型在清单文件中指定,并决定入口点和默认代码。
来源:forc/src/ops/forc_init.rs11-15 forc/src/utils/defaults.rs24-73
初始化过程遵循以下步骤
来源:forc/src/ops/forc_init.rs45-178 forc/src/cli/commands/init.rs41-44
生成项目结构取决于项目类型
project/
├── Forc.toml # Project manifest file
├── src/
│ └── main.sw # Default source file (lib.sw for libraries)
└── .gitignore # Default .gitignore file
project/
├── Forc.toml # Workspace manifest file
└── .gitignore # Default .gitignore file
来源:forc/src/ops/forc_init.rs104-108 forc/src/ops/forc_init.rs131-156
对于每种项目类型,forc 生成默认源代码以供快速上手
默认合约包含基本的 ABI 和实现
contract;
abi MyContract {
fn test_function() -> bool;
}
impl MyContract for Contract {
fn test_function() -> bool {
true
}
}
默认脚本包含一个主函数和可配置项
script;
use std::logging::log;
configurable {
SECRET_NUMBER: u64 = 0
}
fn main() -> u64 {
log(SECRET_NUMBER);
return SECRET_NUMBER;
}
默认库具有最小结构
library;
// anything `pub` here will be exported as a part of this library's API
默认谓词包含一个返回布尔值的主函数
predicate;
fn main() -> bool {
true
}
Forc.toml 清单文件包含项目元数据和依赖项。默认内容因项目类型而异
forc new 命令与 forc init 类似,但会先创建一个新目录
forc new my_project --contract
这将创建一个新目录 my_project 并在其中初始化一个合约项目。
来源:forc/src/cli/commands/new.rs16-95
forc template 命令从模板仓库创建新项目
forc template --project-name my_project --url https://github.com/example/template
这对于更复杂的项目结构或从社区模板开始时非常有用。
来源:forc/src/ops/forc_template.rs16-161
项目初始化系统的主要组成部分是:
InitCommand 结构体在 forc/src/cli/commands/init.rs - 定义命令行界面init 函数在 forc/src/ops/forc_init.rs - 实现初始化逻辑来源:forc/src/cli/commands/init.rs15-39 forc/src/ops/forc_init.rs11-15 forc/src/cli/commands/new.rs16-95
初始化过程由 forc init 命令触发,该命令由 CLI 系统解析并由 init 函数执行。init 函数确定项目类型,创建必要的目录,生成相应的清单文件和源代码,并设置 .gitignore 文件。