ITADN
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

Margo

Margo 是一个替代性的 Cargo registry,它完全由静态文件构建, 因此能够被轻松地提供服务。

快速入门

若要在 GitHub Actions 中使用 Margo,例如在 GitHub Pages 上托管您的注册表,请查看我们的 action

安装 Margo

cargo install margo --index sparse+https://integer32llc.github.io/margo/

初始化注册表

这将在您计划从中提供服务的目录 my-registry-directory 中创建一个新的注册表, 位于 https://my-registry.example.com

margo init my-registry-directory --base-url https://my-registry.example.com

向注册表添加 crate

若要向注册表添加新的 crate 或版本,请运行 margo add,并指定您提供给 margo init 的目录路径以及用于发布的 .crate 文件路径。

# Acquire a crate package, such as by running `cargo package`
margo add --registry my-registry-directory some-crate/target/package/some-crate-1.2.3.crate

使用您选择的 Web 服务器来提供注册表文件

例如,使用 Python 并在 127.0.0.1 所在的目录中提供注册表服务:

python3 -m http.server --bind '127.0.0.1' --dir 'my-registry-directory'

你应该能够在浏览器中访问 127.0.0.1/config.json。 接下来的步骤是,通过你指定的任何 URL 传输静态文件的方式,从 https://my-registry.example.com 来提供那些文件。

配置 Cargo

# In your Rust project that wants to use `some-crate`
mkdir .cargo
cat >>.cargo/config.toml <<EOF
[registries]
my-registry = { index = "sparse+https://my-registry.example.com" }
EOF

添加你的 crate

cargo add --registry my-registry some-crate

其他 Margo 命令

您可以直接在注册表目录中运行该命令,从而省略 --registry 参数。

列出注册表中的 crate

margo list --registry my-registry

移除一个 crate

margo rm --registry my-registry some-crate --version x.y.z

与 Crates.io 的主要区别

  • 💅 不设置文件大小限制
  • 💅 可以依赖除 crates.io 之外的其他注册表中的 crate
  • 💅 依赖项无需实际存在
  • 💅 开发依赖信息不会存储在索引中
  • 💅 不要求使用 JavaScript
  • 💅 结构更简单,因此更易于根据具体需求进行定制
  • 💅 访问权限可通过您当前管理静态文件读写权限的相同方式来控制

贡献代码

请参阅 CONTRIBUTING.md

开发指南

请参阅 DEVELOPMENT.md