composer默认只查packagist.org,私有包需在项目composer.json的repositories中显式声明且type必须为"composer"(非"vcs"或"git"),常见错误包括拼写错误、url缺斜杠、https证书不被信任导致静默fallback。

composer update 为什么根本不查你的私有仓库
因为 Composer 默认只连 packagist.org,除非你在项目 composer.json 的 repositories 字段里**显式声明**了私有源,且类型必须是 "type": "composer"(不是 "vcs" 或 "git")。常见错误包括:repositories 拼错成 repository、URL 少了末尾斜杠、HTTPS 证书不被信任导致静默 fallback 到 packagist。
- 检查是否生效:运行
composer config --list | grep repos,确认私有源已注册 - 验证可访问性:用
curl -I https://your-private-repo.com/packages.json看是否返回 200 - 若用 Satis 构建,确保
packages.json文件里已包含目标包的新版本元数据——它不会自动监听 Git 变更,必须手动satis build
私有包执行 composer update 却没升到新 tag
不是缓存问题,大概率是 Satis 构建时没扫到那个 tag。Satis 默认只收录已打 tag 的稳定版本(如 v2.1.0),而 dev-main 这类分支默认被忽略,除非你配置了 "require-all": true 或在 satis.json 中明确写 "require": {"vendor/package": "dev-main"}。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 构建时加
-v参数:运行satis build satis.json web/ -v,观察日志中是否列出了你要的 commit 或 tag - 想同时收 tag 和 dev 分支:把约束写成
"require": {"vendor/package": "dev-main || ^2.0"} - 本地测试时,用
composer update vendor/package --no-cache绕过元数据缓存,直连私有源验证
更新后类找不到或 autoload 失效
90% 不是包没装对,而是自动加载映射没重建。Composer 安装/更新私有包后,不会自动触发 dump-autoload,尤其当包含自定义 PSR-4 命名空间时,vendor/autoload.php 仍指向旧路径。
- 强制重生成:运行
composer dump-autoload -o(-o表示优化,生成静态映射) - 若私有包用了非标准命名空间,检查其
composer.json中的autoload字段是否正确声明了psr-4或classmap - Laravel/Symfony 项目还需清框架缓存:
php artisan config:clear和php artisan cache:clear
如何确认 composer update 真从私有源拉的包
别信输出日志,看 composer show -p vendor/package 的 source 行。如果显示的是 https://api.github.com/ 或 https://packages.packagist.org/,说明它根本没走你的私有仓库——哪怕 repositories 配对了,也可能因优先级或 URL 匹配失败被跳过。
- 私有源优先级:Composer 按
repositories数组顺序查找,把私有源放在第一位 - 避免域名歧义:私有源 URL 必须和包的
dist.url或source.url域名一致,否则会 fallback - CI 环境建议加
--no-cache+--verbose,直接看到 HTTP 请求发往哪个域名










