#包管理器 #solidity #foundry #git #submodule #push #file

bin+lib soldeer

用 Rust 编写的 Solidity 包管理器。它最小化且易于在 Solidity 项目中使用。与 Foundry 一起工作最佳。

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开发工具

Download history 146/week @ 2024-03-25 152/week @ 2024-04-01 139/week @ 2024-04-08 13/week @ 2024-04-15 14/week @ 2024-04-22 127/week @ 2024-04-29 115/week @ 2024-05-06 395/week @ 2024-05-20 31/week @ 2024-05-27 546/week @ 2024-06-03 877/week @ 2024-06-10 848/week @ 2024-06-17 830/week @ 2024-06-24 1350/week @ 2024-07-01 772/week @ 2024-07-08

每月 3,883 次下载

MIT 许可证

190KB
5K SLoC

Soldeer Rust 许可证:MIT

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 中的依赖项现在包含 versionurl,遵守 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