25 个版本
新 0.2.19 | 2024 年 7 月 15 日 |
---|---|
0.2.15 | 2024 年 6 月 6 日 |
0.2.7 | 2024 年 3 月 27 日 |
0.1.5 | 2023 年 10 月 14 日 |
#79 在 开发工具
每月 3,883 次下载
190KB
5K SLoC
Soldeer
Soldeer 是一个用 Rust 编写的 Solidity 包管理器。
随着 Solidity 开发的日益复杂,对包管理器的需求日益明显。该项目旨在解决以下问题
- Foundry 中的 git 子模块并不是管理依赖项的好方法
- npmjs 是为 JavaScript 生态系统构建的,而不是为 Solidity
- GitHub 版本控制很痛苦,并且并非所有项目都正确使用它
版本 0.2.19
版本 0.2.19 引入了以下破坏性更改
现在您可以使用 git 安装依赖项。支持的平台:GitHub 和 GitLab。目前,我们只支持公共仓库。
语法是 soldeer install <dependency>~<version> git:<url>
。这将克隆仓库并在 dependencies
文件夹中安装依赖项。
您还可以使用特定的提交作为依赖项
soldeer install <dependency>~<version> git:<url> <commit>
一些示例
soldeer install test-project~v1 [email protected]:test/test.git
soldeer install test-project~v1 [email protected]:test/test.git
soldeer install test-project~v1 https://github.com/test/test.git
soldeer install test-project~v1 https://gitlab.com/test/test.git
或使用自定义提交哈希
soldeer install test-project~v1 [email protected]:test/test.git --rev 345e611cd84bfb4e62c583fa1886c1928bc1a464
版本 0.2.7 引入了以下破坏性更改
将依赖项密钥保存为依赖项名称,以遵守 Cargo.toml 格式。对于同一依赖项的多个版本,已创建一个问题,以将其添加为功能 #34。目前,依赖项名称是 toml 文件中的键。
0.2.6 中引入的破坏性更改
在 0.2.6 中,sdependencies
已重命名为 dependencies
。此外,现在存储在 toml 中的依赖项现在包含 version
和 url
,遵守 Cargo toml 格式。
警告
BETA 版本 - 自行承担风险
索尔德有两个部分
- soldeer cli - 一个独立工具,可用于管理项目依赖,它独立于铸造厂
- soldeer 仓库 - 一个中央仓库,用于存储各种软件包。任何人都可以推送自己的软件包作为公共软件包。该仓库类似于 npmjs 或 crates.io
- soldeer 铸造厂(进行中)- 一个铸造厂插件,将允许您直接从 forge 使用 soldeer 进行铸造厂项目
如何使用它
Soldeer CLI
Soldeer CLI 是一个独立工具,可用于管理项目依赖。它不依赖于铸造厂,并且可以在任何项目中使用。CLI 还可以与铸造厂一起使用,通过在新目录 dependencies
中安装依赖项,并且它可以用于更新 remappings.txt
文件中的重映射。
要使用 CLI,您必须通过 cargo 安装它
cargo install soldeer
上面的命令将在您的 ~/.cargo/bin
文件夹中安装 soldeer
。如果尚未添加到 PATH,请确保将其添加(通常已经添加)。
然后您必须在项目的根目录中创建一个 soldeer.toml
文件。文件应如下所示
[remappings]
enabled = true
[dependencies]
remappings
选项允许您启用或禁用重映射自动完成。如果您将其设置为 true
,则重映射将在您安装新的依赖项时自动更新。dependencies
选项用于存储您通过 soldeer install <dependency>~<version>
命令安装的依赖项。
如果您想与铸造厂一起使用,可以跳过创建 soldeer.toml
文件,而是使用 foundry.toml
文件。您只需在 foundry.toml
文件中添加 dependencies
选项,并且重映射将自动更新。
铸造厂配置示例
[profile.default]
auto_detect_solc = false
bytecode_hash = "none"
cbor_metadata = false
.... other foundry config
[dependencies]
即使 [dependencies]
是空的,这也会告诉 soldeer 使用 foundry.toml
文件来管理依赖项。
警告
如果您没有定义带有 enabled
字段的 soldeer.toml
或带有 dependencies
字段的 foundry.toml
,则重映射不会更新,您将收到警告。
如何安装它
cargo install soldeer
检查安装是否成功
soldeer help
从源安装
cargo build --release
并使用 target/release/
中的 soldeer
二进制文件。
如何使用它
Soldeer
使用简单。它可以与 foundry.toml
文件一起工作,或者您也可以创建一个 soldeer.toml
。从版本 0.1.5
开始,如果您只想使用 foundry.toml
文件,则可以跳过创建 soldeer.toml
。
依赖项安装
使用以下命令添加依赖项
soldeer install <dependency_name>~<version>
要查找依赖项是否可用,请访问 https://soldeer.xyz。
此外,您还可以从任何位于任何 URL 的 zip 文件中安装依赖项
soldeer install <dependency_name>~<version> <url>
此命令将下载依赖项的zip文件,解压它,并将其安装到dependencies
目录中。
soldeer install
此命令将从soldeer.toml
/foundry.toml
文件中安装所有依赖项。
如何将新的依赖项推送到仓库
为了将新的依赖项推送到仓库,您需要在https://soldeer.xyz上创建一个账户,创建一个与依赖项名称匹配的项目。
示例:创建一个名为my-project
的项目,然后使用soldeer push my-project~v1.0
。这将把项目推送到仓库,并可供每个人使用。在使用推送到命令之前,您需要使用soldeer login
登录到仓库。
推送特定目录
如果您想从项目中推送特定目录,可以使用soldeer push my-project~v1.0 /my/path/to/source/files
选项。这将仅推送指定目录中的文件。
忽略文件
如果您想从推送中忽略某些文件,需要创建一个包含您想忽略的文件的.soldeerignore
文件。该文件应位于项目的根目录中。此文件采用与.gitignore
相同的语法。
试运行
如果您想试运行推送以检查将推送哪些文件到中央仓库,请使用soldeer push my-project~v1.0 [PATH_TO_DEPENDENCY] --dry-run true
。这将创建一个zip文件,您可以解压缩并检查已推送的内容。我们建议在推送新的依赖项之前运行试运行,以避免推送不需要的文件。
命令完整列表
有关更多命令,请使用soldeer help
。
Foundry集成
一旦完成Foundry集成,您将能够通过使用forge soldeer ...
直接从Foundry使用Solder。您将拥有与独立版本相同的命令。
注意事项
"添加到重映射"功能仅向remappings.txt文件追加,不会删除旧依赖项。如果您想从重映射中删除依赖项,必须手动操作。
如果您使用其他依赖项管理器,如git子模块或npm,请确保不要在Solder和其他管理器之间重复依赖项。
依赖项维护
Solder的目标是集成到每个开源项目的管道中,如OpenZeppelin、Solady、Uniswap等。这些项目的维护者可以将自己的依赖项推送到仓库,社区可以使用它们。直到那时,Solder维护团队(目前是m4rio.eth)将根据npmjs版本或GitHub,将最常用的依赖项推送到仓库。我们使用此软件爬取和推送位于soldeer
组织下的依赖项。
对于那些想要额外一层安全的人,将在soldeer.lock
文件中为已安装的依赖项生成SHA。一些项目被截断,例如,对于OpenZeppelin,仅推送contracts
目录到仓库,因此您需要将SHA与原始版本合约目录的SHA进行比较。
对于项目维护者 如果您想将您的项目从 Soldeer 组织迁移出来,并自行负责版本推送,请创建一个工单或通过 X (原 Twitter) 联系我。
依赖项
~15–32MB
~455K SLoC