composer管理私有包需构建元数据、正确声明type与顺序、运行时认证三步全对齐;缺一则install静默跳过或报错,不提示具体失败环节。

composer 管理私有包不是加个 URL 就能跑通的事——三步缺一不可:**构建出可访问的元数据、声明时类型和顺序正确、认证凭据在运行时可用**。跳过任一环,composer install 都会静默跳过你的包,或报 Could not find package 却不告诉你卡在哪。
私有源声明必须带 type 且位置靠前
Composer 查源是顺序匹配,且默认 fallback 到 packagist.org。只写 URL 不写 type,整个 repositories 条目会被忽略。
-
type只能是vcs(Git/SVN)、composer(Satis/Artifactory)、package(单包硬编码),不能留空或拼错 - Git 仓库 URL 必须以
.git结尾,否则不被识别为vcs类型 - Satis 类型必须用
"type": "composer",URL 指向packages.json文件本身,比如https://satis.internal/packages.json,不是首页 - 必须显式禁用公共源:
"packagist.org": false要作为独立项写进repositories数组,不能塞在config下
缓存导致新 tag 找不到?别只清 cache
用 vcs 类型时,composer show vendor/pkg 看不到新打的 v1.2.3 tag,大概率是元数据缓存没刷新,但光跑 composer clear-cache 只治标。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 临时验证:加
--no-cache参数,例如composer update vendor/pkg --no-cache - CI 环境建议设
COMPOSER_CACHE_DIR=/dev/null,彻底避免缓存干扰 - 确认 Git 侧已推送:
git push --tags,且 tag 名符合 Composer 规范(如v1.2.3或1.2.3,不能是release-1.2.3) - 若用
path类型开发中包,改完子包composer.json后也得clear-cache,否则仍读旧缓存
Git 认证失败不是 Composer 的锅
报错 Could not fetch https://git.internal/xxx, enter your token 或卡住不动,本质是 Git 命令层拿不到凭据,Composer 只是调用者。
- 优先配 Git 凭据助手:
git config --global credential.helper store,然后手动git clone一次,输账号密码后即被记住 - Token 写 URL 仅限测试:
"url": "https://token:x-oauth-basic@git.internal/repo.git"—— 切勿提交到 Git - 生产环境必须用 SSH 密钥:
"url": "git@git.internal:vendor/repo.git",并确保~/.ssh/id_rsa可读、ssh -T git@git.internal能通 - CI 中若用 token,应通过
COMPOSER_AUTH注入auth.json内容,而非写死在配置里
Satis 构建失败?先看 web 服务有没有看到文件
php bin/satis build satis.json web/ 执行成功不代表能用——Satis 是一次性静态生成器,它不启动服务,只写文件。真正的问题常出在 Web 服务器配置上。
- 输出路径(如
/var/www/satis)必须与 Nginx/Apache 的root完全一致,不能是子目录(比如/var/www/satis/web) - Nginx 必须显式支持 JSON:
location ~ \.json$ { add_header Content-Type application/json; },放在 location 块里,不是 server 全局 - 别用
php -S跑开发服务器——它返回 200 但缺Content-Type和重定向逻辑,composer install会直接放弃请求 - 检查权限:
www-data用户必须能读packages.json和所有dist/*.zip文件
packagist.org 没禁用干净、Git 凭据未在 CI 机器上预置、Satis 输出路径和 Web root 对不上**。这三个点任意一个出问题,composer install 都不会报错,只会安静地走错源。










