bitbucket私有仓库需在composer.json中显式配置repositories,类型为vcs且url以.git结尾;https方式需用app password配auth.json,权限须在bitbucket设置中开启read。

Bitbucket 仓库无法通过 composer require 直接安装?
因为 Bitbucket 默认不提供 Packagist 兼容的元数据,composer require 会直接报错 Could not find package xxx at any version。这不是权限或 token 问题,而是 Composer 根本没去查你的私有仓库——它默认只查 packagist.org。
必须在 composer.json 里手动加 repository 配置
不能只靠 composer config 命令全局设置,必须显式声明仓库类型和地址。Bitbucket 支持两种方式,选错一种就拉不下来:
-
Git 方式(推荐):适用于任何分支/标签,不需要 Bitbucket Server 或额外服务,只需 SSH 或 HTTPS 地址。示例:
"repositories": [ { "type": "vcs", "url": "https://bitbucket.org/your-org/your-repo.git" } ] -
Package 方式(慎用):需手动写死每个版本的
dist和source,维护成本高,仅适合极简、固定发布的场景
注意:url 必须以 .git 结尾,否则 Composer 会跳过该仓库;如果用 HTTPS,确保已配置好 Bitbucket App Password(不是账号密码),并启用 http-basic 认证
private repo 要配 auth.json,但别放错位置
Auth 文件必须放在 Composer 的「配置作用域」内,且格式严格:
- 全局生效:写入
~/.composer/auth.json(Linux/macOS)或%APPDATA%\Composer\auth.json(Windows) - 项目级生效:放在项目根目录的
auth.json(需确保未被 .gitignore 排除,且不提交敏感信息) - 内容必须是标准 JSON,字段名大小写敏感:
{ "bitbucket.org": { "consumer-key": "", "consumer-secret": "", "oauth-token": "", "oauth-token-secret": "" } }但更常用的是http-basic:{ "bitbucket.org": { "username": "your-username", "password": "your-app-password" } }
常见错误:auth.json 放在 vendor 下、用错域名(如写成 https://bitbucket.org)、密码含特殊字符未 URL 编码(其实不用编码,App Password 本身是纯字母数字)
require 时必须带完整 vendor/name,且 name 要和仓库里 composer.json 一致
即使你本地改了 name 字段,Composer 仍以仓库中 composer.json 的 name 为准。比如仓库里写的是 "name": "myorg/my-package",那你就只能:
composer require myorg/my-package:dev-main
- 分支名要加
dev-前缀(如dev-develop),tag 则直接用版本号(如1.0.0) - 如果仓库没打 tag,又没设
"minimum-stability": "dev",composer install会失败 - 执行前建议先
composer clear-cache,避免旧缓存干扰
最常被忽略的一点:Bitbucket 的私有仓库默认关闭「允许匿名克隆」,哪怕你配了 token,也要进仓库 Settings → Access Management → Repository access,确认你的账号有「Read」权限——Composer 拉取时走的是 Git 协议,不是 API










