Private Packagist 必须同时完成 token 绑定、组织级包同步、项目级 repository 声明三件事:token 需通过 composer config -g http-basic.repo.packagist.com <token> "" 全局注册;repository 中须设 "packagist": false 并声明 "type": "composer" 且 URL 以 / 结尾;包必须在后台 Packages 页面手动启用并分配 Team 权限,缺一即报 401 或 Package not found。

Private Packagist 不是改个 URL 就能用的私有源,它必须同时完成 token 绑定、组织级包同步、项目级 repository 声明三件事,缺一环就会报 401 Unauthorized 或 Could not find package,且错误提示不指向具体断点。
Private Packagist 的 token 必须用 composer config -g http-basic 注册
硬写 auth.json 或塞进项目根目录,CI 构建时大概率失效——Private Packagist 只认 Authorization: Basic 请求头里 base64 编码的 username:password 格式,而它的 token 必须填在 username 位、password 留空。
- 在 Private Packagist 后台「API Tokens」页生成 read 或 read-write token,复制纯字符串(不含引号)
- 执行:
composer config -g http-basic.repo.packagist.com your-token-here "" - Linux/macOS 下该命令会写入
~/.composer/auth.json,且自动设为600权限;Windows 会写入%APPDATA%\Composer\auth.json - CI 环境请用
COMPOSER_AUTH环境变量注入:{"http-basic":{"repo.packagist.com":{"username":"TOKEN","password":""}}}
repository 声明必须包含 "packagist": false 且 type 为 "composer"
只加一条 "url": "https://repo.packagist.com/your-org/" 是不够的。Composer 默认仍 fallback 到公共源,同名包会被优先拉取 public 版本,你的私有包直接被跳过。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
"packagist": false必须和"repositories"同级,不是嵌套在某个源对象里 - URL 必须以
/结尾,例如https://repo.packagist.com/acme/✅,写成https://repo.packagist.com/acme❌ 会导致路径拼接错误 - type 必须是
"composer",不能是"vcs"或"package";Private Packagist 不提供 VCS 直连能力 - 正确结构示例:
{
"repositories": [
{
"type": "composer",
"url": "https://repo.packagist.com/acme/"
}
],
"packagist": false
}
包找不到?先确认它是否已在 Private Packagist 组织中“显式启用”
连接 GitHub/GitLab 并不等于包自动上线。Private Packagist 默认不会扫描你所有私有仓库,每个包必须手动添加或通过 Webhook 触发 sync,并勾选「Include in composer repository」。
- 登录 Private Packagist 控制台 → 进入对应 Organization → 「Packages」→ 点「Add Package」
- 输入完整包名(如
acme/internal-api),确保和其composer.json中"name"字段完全一致(大小写敏感) - 选择 Git 仓库地址后,务必勾选「Include in composer repository」,否则
packages.json里根本不会出现该包 - 首次 sync 后,检查
https://repo.packagist.com/acme/packages.json是否含该包的name和version字段
企业级权限与审计依赖 Team 和 Package 两级配置
Private Packagist 的权限模型不是“全有或全无”,而是靠 Organization → Team → Package 三级控制,漏配 Team 成员就看不到包,哪怕 token 有效。
- 新建
Team(如backend-dev),把对应成员加入 - 进入
Package页面 → 「Permissions」→ 分配该 Team 对此包的read或read-write权限 - 若启用 SSO(如 Azure AD),需在「Authentication」中绑定 IDP,并确认用户邮箱后缀匹配团队域规则
- 审计日志默认保留 90 天,关键操作(如包删除、token 创建)可在「Audit Logs」中导出 CSV
最常被忽略的点:Private Packagist 的包可见性是“白名单制”,即使 token 正确、URL 无误、composer.json 配对,只要包没被人工点过「Add Package」并勾选启用,或者 Team 权限没给到具体人,composer require 就永远返回 Could not find package —— 它不会告诉你“这个包没被启用”,只会安静地失败。

















