答案是使用SSH密钥或GitHub Personal Access Token(PAT)配置Composer访问私有仓库。推荐根据环境选择:开发环境可用SSH密钥,通过ssh-keygen生成密钥并添加公钥到GitHub;CI/CD环境则推荐使用PAT,通过环境变量GITHUB_TOKEN传递认证信息,避免凭据泄露。

Composer要依赖私有GitHub包,核心在于让Composer获得访问这些私有仓库的权限。最常见且推荐的做法是使用SSH密钥或GitHub Personal Access Token (PAT)进行认证。这两种方式都能让Composer在执行
composer install
composer update
要让Composer能够顺利拉取私有的GitHub包,你需要配置好认证凭据。这里我们主要讨论两种主流且可靠的方案:SSH密钥和GitHub Personal Access Token。
方案一:使用SSH密钥 这是许多开发者偏爱的方式,因为它与Git本身的认证机制高度兼容。
生成SSH密钥对(如果还没有的话): 如果你还没有SSH密钥,或者想为Composer专门生成一个,可以在终端运行:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
~/.ssh/id_rsa
~/.ssh/id_rsa.pub
将公钥添加到GitHub账户或组织: 登录GitHub,进入
Settings -> SSH and GPG keys
New SSH key
id_rsa.pub
配置Composer的Git客户端: Composer在内部会调用Git命令来克隆仓库。确保你的Git客户端配置了SSH。通常情况下,只要你的SSH代理(
ssh-agent
ssh-add ~/.ssh/id_rsa
ssh-agent
在composer.json
composer.json
{
"name": "your-project/app",
"description": "My main application",
"type": "project",
"require": {
"php": "^8.0",
"your-vendor/private-package": "^1.0"
},
"repositories": [
{
"type": "vcs",
"url": "git@github.com:your-vendor/private-package.git"
}
],
"config": {
"allow-plugins": {
"php-http/discovery": true
}
}
}注意
"url": "git@github.com:your-vendor/private-package.git"
方案二:使用GitHub Personal Access Token (PAT) 当SSH不太方便,比如在CI/CD环境中,或者你不想管理SSH密钥时,PAT是个很好的替代方案。
生成Personal Access Token: 登录GitHub,进入
Settings -> Developer settings -> Personal access tokens -> Tokens (classic)
Fine-grained tokens
Generate new token
repo
配置Composer使用PAT: 你可以通过多种方式让Composer使用这个PAT:
全局配置(不推荐用于生产环境):
composer config -g github-oauth.github.com <YOUR_GITHUB_TOKEN>
~/.composer/config.json
项目级别配置(推荐): 在你的项目根目录运行:
composer config github-oauth.github.com <YOUR_GITHUB_TOKEN>
composer.json
auth.json
auth.json
.gitignore
// auth.json
{
"github-oauth": {
"github.com": "<YOUR_GITHUB_TOKEN>"
}
}环境变量(CI/CD环境推荐): 在CI/CD管道中,你可以设置一个环境变量,例如
COMPOSER_AUTH
export COMPOSER_AUTH='{"github-oauth": {"github.com": "<YOUR_GITHUB_TOKEN>"}}'GITHUB_TOKEN
export GITHUB_TOKEN=<YOUR_GITHUB_TOKEN>
在composer.json
{
"name": "your-project/app",
"description": "My main application",
"type": "project",
"require": {
"php": "^8.0",
"your-vendor/private-package": "^1.0"
},
"repositories": [
{
"type": "vcs",
"url": "https://github.com/your-vendor/private-package.git"
}
]
}Composer会尝试使用配置的PAT来认证HTTPS请求。
选择SSH密钥还是
以上就是composer如何让项目依赖私有的GitHub包的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号