软件包仓库
p.c.nf 是 CNF 软件包仓库,提供类似 GitHub 的命名空间,用于发布带版本的软件包。每项制品都有稳定 URL、下载计数和访问控制。
概览
p.c.nf 在 <username>/<project> 命名空间下托管软件包。每个项目包含一个或多个版本,每个版本可包含一个或多个可下载制品。
类似 npm 的 @scope/package 或 GitHub 的 user/repo,但用于二进制制品而非源代码。
URL 结构
p.c.nf/
目录 — 浏览所有公共软件包
p.c.nf/<user>
用户资料 — 列出该用户的软件包
p.c.nf/<user>/<pkg>
项目页面 — 最新版本和历史记录
p.c.nf/<user>/<pkg>/<version>
版本页——制品和更改日志
p.c.nf/<user>/<pkg>/download
下载最新的制品
p.c.nf/<user>/<pkg>/<version>/download
下载特定版本(永久链接)
p.c.nf/<user>/<pkg>/<version>/<label>
下载带标签的制品(例如平台变体)
下载
使用 curl 或 wget 下载软件包:
下载支持 HTTP Range 请求以断点续传,也支持返回 304 Not Modified 的条件 GET 请求。
速率限制:每个 IP 地址每分钟 30 次下载。超过限制时会返回 429 Retry-After 标头。
发布
可通过控制台或 HTTP API 发布新版本。首次发布时,两种方式都会创建该项目。
通过 API
必填字段:
slug— 只能包含小写字母和连字符(最多 128 个字符)version— 自由格式字符串;建议使用语义化版本file— 要上传的制品
可选字段:description、category、icon、visibility、changelog,以及用于多制品版本的 label。
通过控制台
登录 console.c.nf 并打开下载管理。控制台负责文件上传、元数据和版本更新。
/<username>/ 命名空间,不能以其他用户的名义发布。认证
支持两种身份验证方式:
API 密钥(建议用于自动化)
在 console.c.nf/account/api 生成密钥,然后将其作为 Bearer 令牌发送:
密钥仅在生成时显示一次。您最多可创建 10 个活动密钥,并可随时撤销。
会话 Cookie
从 console.c.nf 或 id.c.nf 浏览时,会话 Cookie 会自动完成身份验证,适用于浏览器扩展和控制台。
可见度
public
列入目录,任何人都可以下载。
unlisted
不列入目录,但任何持有 URL 的人都可以下载。
private
仅所有者和管理员可以查看或下载。
版本
每个已发布版本都会保留在稳定 URL 中。发布新版本后,旧版本仍然可用,因此固定使用 /1.0.0/download 的使用者会继续获得完全相同的构建。
不含版本号的 /download 端点始终提供最新版本。
版本字符串可使用自由格式文本。为便于理解,建议采用语义化版本(MAJOR.MINOR.PATCH),但系统不会强制执行。
FAQ
p.c.nf 与 d.c.nf 有什么区别?
p.c.nf 是按用户划分命名空间(user/project)的版本化软件包注册表。d.c.nf 是由 CNF 管理员维护的平面下载目录。
可以删除某个版本吗?
可以通过控制台删除。但删除版本会导致使用者保存的固定版本 URL 失效,因此通常更建议发布新版本。
有大小限制吗?
制品大小限制取决于用户权限级别:每个 UPL 级别增加 50 MB,最高约 500 MB。较大的文件可通过控制台分块上传。
如何对扩展程序进行身份验证?
登录 console.c.nf 后,CNF Cred 扩展既可使用会话 Cookie,也可使用 API 密钥。请在扩展设置中配置该方式。