近期購買了Laravel的nova以后,需要對它的核心代碼做一些修改,為方便與團隊其他成員分享,以及在nova官方庫更新后方便對差異管理。便將nova庫掛在自己的gitlab,通過composer直接引用。
gitlab上全是私有庫,composer獲取需要認證,在本地測試時輸入用戶名/密碼過認證倒不打緊,生產服務器上布署就有問題了,由於是自動布署,必須是全自動才行。經過一番折騰,composer可以通過配置gitlab的Private Token完成驗證,獲取到私有庫,不用再輸用戶名密碼。
為方便描述操作過程。這里以官方包laravel/nova為例,我將laravel/nova放到自已的gitlab上,路徑為
https://git.papamk.com/xxx/nova,並設置為私有庫。我們的目標是composer可以直接獲取該包而不用輸入密碼。
配置過程
1. 生成Private Token
在gitlab上,在`User Settings`中找到`Access Tokens`,見下圖:
⚠️⚠️⚠️:生成的token只顯示一次,記得保存下來,后面要用到。

2.配置composer的認證信息
編輯~/.composer/auth.json(如果沒有該文件,就直接創建)
1 { 2 "bitbucket-oauth": {}, 3 "github-oauth": {}, 4 "gitlab-oauth": { 5 }, 6 "gitlab-token": { 7 "git.papamk.com": "<你的Private Token>" 8 }, 9 "http-basic": {}, 10 "gitlab-domains":["git.papamk.com"] 11 }
注意點:
- 除非你使用的是gitlab.com,否則你應該將gitlab的域名添加到gitlab-domains中;
3. 編輯 composer.json
{ // ...省略其他部分 "repositories": [ { "type": "gitlab", "url": "https://git.papamk.com/xxx/nova" } ], "require": { // ...省略其他包 "laravel/nova": "dev-master", } }
重點:
- type:必須是gitlab
- 包名:官方包包名為laravel/nova,這里仍然要使用laravel/nova,不能使用xxx/nova
到此大功告成,運行下composer install或者composer udpate試試。
其他問題
有可能會出現配置正確,但是包的獲取是直接從本地cache中直接讀取的問題。這個時候,直接刪除~/.composer/cache,再試一下即可。