套件清單 (Package Manifest)
Move.toml 是描述套件 (package) 及其依賴項的清單檔案。它以 TOML 格式撰寫,包含多個區段,其中最重要的是 [package]、[dependencies] 和 [addresses]。
[package]
name = "my_project"
edition = "2024"
[dependencies]
example = { git = "https://github.com/example/example.git", subdir = "path/to/package", rev = "framework/testnet" }
區段 (Sections)
套件 (Package)
[package] 區段用於描述套件。此區段中的任何欄位皆不會發佈至鏈上,但會用於工具和發佈管理;它們也指定了編譯器的 Move 版本。
- name - 匯入套件時的名稱;
- edition - Move 語言的版本;目前唯一有效的值為 2024;
依賴項 (Dependencies)
[dependencies] 區段用於指定專案的依賴項。每個依賴項都以鍵值對的形式指定,其中鍵是依賴項的名稱,值是依賴項規格。依賴項規格可以是 Git 儲存庫 URL 或本地目錄的路徑。
# Git 儲存庫
example = { git = "https://github.com/example/example.git", subdir = "path/to/package", rev = "framework/testnet" }
# 本地目錄
my_package = { local = "../my-package" }
套件也會從其依賴項匯入具名地址。例如,Sui 依賴項會將 std 和 sui 地址新增至專案,可在程式碼中取代完整的 0x1 和 0x2 地址使用。
從 Sui CLI 1.45 版開始,如果沒有明確列出任何 Sui 系統套件(std、sui、system、bridge 和 deepbook),將會自動新增為依賴項。
使用 Override 解決版本衝突 (Resolving Version Conflicts with Override)
有時候依賴項之間會出現同一個套件的版本衝突。例如,如果你有兩個依賴項使用不同版本的 Example 套件,你可以在 [dependencies] 區段中覆寫該依賴項。為此,請將 override 欄位新增至依賴項。將會使用 [dependencies] 區段中指定的依賴項版本,而非依賴項本身指定的版本。
[dependencies]
example = { override = true, git = "https://github.com/example/example.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" }
TOML 樣式 (TOML Styles)
TOML 格式支援兩種表格樣式:內嵌 (inline) 和多行 (multiline)。上述範例皆使用內嵌樣式,但也可以使用多行樣式。你不會想將其用於 [package] 區段,但對於依賴項可能很有用。
# 內嵌樣式
[dependencies]
example = { override = true, git = "https://github.com/example/example.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" }
MyPackage = { local = "../my-package" }
# 多行樣式
[dependencies.example]
override = true
git = "https://github.com/example/example.git"
subdir = "crates/sui-framework/packages/sui-framework"
rev = "framework/testnet"
[dependencies.my_package]
local = "../my-package"
延伸閱讀 (Further Reading)
- Sui 文件中的 Move 套件管理 (Move Package Management)。
- Move 參考文件中的 套件 (Packages)。