Skip to main content

套件清單 (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)​