8个版本
0.1.6 | 2024年8月16日 |
---|---|
0.1.5 | 2023年4月19日 |
0.1.4 | 2023年1月8日 |
0.1.3 | 2022年3月2日 |
0.0.0 | 2020年11月17日 |
#79 in 配置
779每月下载量
46KB
833 行
cargo-http-registry
cargo-http-registry
是一个 cargo 注册表,允许在不需要使用 crates.io
时快速发布crates。
该应用程序可以用来托管本地注册表,crates可以发布到该注册表。crates的发布通过基于HTTP的API进行,可以通过常规 cargo publish
命令进行接口操作。crates存储在文件系统上,访问它们不需要注册表。
用法
要设置本地注册表,只需运行 cargo-http-registry
并提供注册表根目录的路径
$ cargo-http-registry /tmp/my-registry
如果目录不存在,则会创建它,并根据需要填充。
默认情况下,注册表只在本地上监听 127.0.0.1
,但命令行选项允许覆盖此设置。
要使 cargo
了解此注册表,它需要在 cargo
配置文件 中进行声明。注册表可以通过本地文件系统(通过指定其路径)或通过HTTP访问。HTTP地址和端口号可以在注册表的 config.json
中找到(例如,示例中的 /tmp/my-registry/config.json
;请参阅 api
键内容)。然后打开您的 ~/.cargo/config.toml
(或项目配置)并添加以下行
[registries]
my-registry = { index = "http://127.0.0.1:35503/git" }
# Alternatively, access it via path:
my-registry = { index = "file:///tmp/my-registry" }
此外,请注意,对于HTTP访问,您需要启用 net.git-fetch-with-cli
设置。这可以通过 config.toml
实现,例如添加以下内容:
[net]
git-fetch-with-cli = true
有了这些,现在您可以向注册表发布crate,并从中提取它们。
$ cargo publish --registry my-registry
Updating `/tmp/my-registry` index
Packaging my-lib v0.1.0
Verifying my-lib v0.1.0
Compiling my-lib v0.1.0
Finished dev [unoptimized + debuginfo] target(s) in 0.09s
Uploading my-lib v0.1.0
创建的注册表不需要任何令牌检查。因此,如果您被要求 cargo login
到注册表,可以使用任何字符串。
您还可以调整crate,只允许发布到特定的注册表,这将防止意外推送到 crates.io
--- Cargo.toml
+++ Cargo.toml
@@ -1,9 +1,10 @@
[package]
name = "my-lib"
version = "0.1.0"
authors = ["Daniel Mueller <[email protected]>"]
edition = "2018"
+publish = ["my-registry"]
# See more keys and their definitions at https://doc.rust-lang.net.cn/cargo/reference/manifest.html
[dependencies]
要从本地注册表消费已发布的crate,只需设置依赖项的 registry
键
--- Cargo.toml
+++ Cargo.toml
@@ -8,3 +8,4 @@ edition = "2018"
[dependencies.my-lib]
version = "0.1"
+registry = "my-registry"
请注意,cargo-http-registry
不是 cargo
子命令,不能用作此类。
此外,请注意,注册表旨在在受信任的环境中使用,例如在单个计算机或本地家庭网络中。原因在于,根据设计,它没有认证方案,也没有采取任何加固代码的尝试。
Docker
在Docker容器中运行注册表
docker run -p 35504:35504 ghcr.io/d-e-s-o/cargo-http-registry:latest /tmp/test-registry --addr 0.0.0.0:35504
在docker compose文件中运行 cargo-http-registry
version: "3"
services:
registry:
image: ghcr.io/d-e-s-o/cargo-http-registry:latest
container_name: cargo-registry
restart: always
# Arguments:
# - Directory where the registry will store its data.
# Cargo-http-registry creates the directory if it does not exist.
# - Server address.
# Note that 127.0.0.1 doesn't work in GitHub actions.
# Use 0.0.0.0 instead.
command: /tmp/test-registry --addr 0.0.0.0:35504
ports:
- "35504:35504"
依赖项
~22–35MB
~591K SLoC