Satis不支持发布操作,仅通过打合规tag、确保composer.json合法、运行satis build生成静态索引;构建失败常见于Git权限不足、tag不规范(如dev-main)、repositories配置错误或homepage与客户端URL不一致。

satis 不支持「发布」操作,它只拉取 Git 仓库、解析 tag、生成静态文件。所谓“发布包到 Satis”,本质是:打合规 tag → 确保 composer.json 合法 → 运行 satis build 重新生成索引。
satis build 找不到你的私有包?
常见现象是构建日志里出现 skipping package vendor/name 或完全没输出该包,但你确认 Git 仓库存在且可访问。
- 目标 Git 仓库根目录下必须有合法
composer.json,且name字段全小写 + 短横线(如"acme/utils"),含大写字母或下划线会被静默跳过 - 必须打了符合语义化版本的 tag(如
v1.2.0、1.2.0),dev-main或dev-develop默认不收录,除非你在satis.json中显式加"minimum-stability": "dev" -
satis.json的repositories是顶层数组,每个元素必须是完整对象:{"type": "vcs", "url": "<a href="https://www.php.cn/link/b4857835b5b69aef8e214f5e0094126a">https://www.php.cn/link/b4857835b5b69aef8e214f5e0094126a</a>"},不能只写字符串 URL - 若用 HTTPS 私有地址,构建机需能
git clone通;建议提前配置凭据:git config --global credential.helper store,或在 URL 中嵌入 token:<a href="https://www.php.cn/link/7a5e06a8ab99eb8b1732907b4a833e3d">https://www.php.cn/link/7a5e06a8ab99eb8b1732907b4a833e3d</a>
packages.json 生成了,但 composer install 还是报 404?
这不是网络不通,而是 Composer 根本没拿到有效 JSON,或路径拼错了。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 检查 Web 服务器是否把
output-dir设为 root(如 Nginx 的root /var/www/satis;),访问<a href="https://www.php.cn/link/a4daa5e1560dfd8a5c57a60a4690ea16">https://www.php.cn/link/a4daa5e1560dfd8a5c57a60a4690ea16</a>必须返回 HTTP 200 +Content-Type: application/json -
satis.json中的homepage值(如"<a href="https://www.php.cn/link/5853ccb92475e15bb4042e784701feb1">https://www.php.cn/link/5853ccb92475e15bb4042e784701feb1</a>")必须和客户端composer.json里repositories.url完全一致,包括末尾斜杠 ——"<a href="https://www.php.cn/link/b8ec5aa9dfe3f8c836cf09d2d34b6a6f">https://www.php.cn/link/b8ec5aa9dfe3f8c836cf09d2d34b6a6f</a>"和"<a href="https://www.php.cn/link/5853ccb92475e15bb4042e784701feb1">https://www.php.cn/link/5853ccb92475e15bb4042e784701feb1</a>"是两个不同源 - Nginx/Apache 要允许访问
dist/子路径(如dist/acme-utils/1.2.0-hash.zip),否则composer install --prefer-dist会失败,报file could not be downloaded
客户端 composer.json 怎么写才真正生效?
写错位置、漏关键字段、顺序不对,都会导致私有包被忽略。
-
repositories必须是项目级composer.json的顶层字段,不能嵌套在require或其他字段下 - 必须显式禁用官方源:
"packagist.org": false,否则同名包优先从 packagist.org 拉,你的私有版本会被覆盖 - 私有源要放在
repositories数组第一位,Composer 按顺序查找,不会合并同名包 - 示例正确写法:
{ "repositories": [ { "type": "composer", "url": "https://www.php.cn/link/5853ccb92475e15bb4042e784701feb1" } ], "packagist.org": false, "require": { "acme/utils": "^1.2" } }
最关键的不是 build 成功,而是 satis.json 里每个 repositories 元素是否真能被构建机 git clone 通,以及客户端是否真的在用这个源 —— 这两点出错,整个流程就静默失效,连错误提示都没有。

















