Composer 是一個 PHP 依賴包管理工具,我們通過在 composer.json 配置中申明項目依賴后,它會自動在的項目中安裝完成項目所需依賴。一些常用的項目依賴包列表,見這里。
安裝
下載并安裝
這里在 Linux 環境下全局安裝 Composer。
$ wget https://getcomposer.org/installer
$ php installer --install-dir=/usr/local/bin --filename=composer
如果出現如下錯誤,可以在php installer
命令后追加--disable-tls
參數。
The "https://getcomposer.org/download/1.4.1/composer.phar.sig" file could not be downloaded: SSL: Connection reset by peer
# 或者
Failed to decode zlib stream
安裝完成后,查看 Composer 版本信息。
$ composer --version
Composer version 1.4.1 2017-03-10 09:29:45
切換中國鏡像
由于國外鏡像存在被墻的問題,所以這里將 Composer 鏡像切換為 中國鏡像。
$ composer config -g repo.packagist composer https://packagist.phpcomposer.com
命令
常用命令:
require # 添加包到composer.json并安裝
update # 更新composer.json中的包至最新版本,并更新composer.lock文件
remove # 刪除包及其依賴
create-project # 創建一個項目并安裝依賴
dump-autoload # 自動加載
init # 創建composer.json
install # 從composer.lock安裝項目的依賴包
config # 設置配置信息
search # 查找一個包
self-update # 更新composer至最新版本
show # 查看包信息
status # 查看本地修改的包
validate # 校驗composer.json和composer.lock
還有一些較少使用的命令,這里不一一列出。
搭建私有倉庫
私有倉庫是團隊開發項目中不可或缺的,這里使用 Satis 來實現這一需求。
下載安裝
這里通過 Composer 方式拉取 Satis 源碼。
$ cd /home/www # $path
$ composer create-project composer/satis:dev-master --keep-vcs
安裝后的默認目錄名為 /$path/satis
。
配置
修改satis.json
文件,在這里列舉出倉庫所有包的托管倉庫地址,以 GitHub 上的開源 MongoDB 地址為例,講述配置詳情。
$ cd satis/
$ vim satis.json
內容如下所示:
{
"name": "Fhb Repository", //名稱
"homepage": "http://packagist.fanhaobai.com", //satis倉庫地址
"repositories": [ //所有包托管倉庫地址
{
"type": "vcs", //倉庫類型,github|gitlab為vcs
"url": "git@github.com:fan-haobai/yii2-mongodb.git" //MongoDB倉庫地址
},
... ... //其他需要索引的倉庫地址
],
"require-all": true //獲取全網所有鏡像,建議不這樣設置
"archive": {
"directory": "dist",
"format": "tar",
"skip-dev": true
}
}
需要說明的是,如果包托管倉庫也是采用開源版本管理系統搭建,那么這里require-all
可以設置為 true。否則,建議只列舉出需要索引的包名稱以及版本號,因為設置為 true 會掃描全網所有包地址。例如倉庫地址設為 GitHub,那么掃描的全網包數量巨大,非常耗時。所以在本例中修改為如下:
... ....
"require": {
"yiisoft/yii2-mongodb": "^2.1.0"
}
... ...
運行
$ php bin/satis build satis.json /home/www/packagist -v
-v
表示顯示出索引詳細。/home/www/packagist
目錄為生成的倉庫目錄,Nginx 配置站點目錄指向此處,即packagist.fanhaobai.com
指向此處。因為后續更新包索引也需要運行該命令,所以將該命令寫為build.sh
。
如果看到Installing xxx/xxx Downloading: 100% ...
信息,就說明索引成功,訪問 站點 即可。
{% asset_img bb8a-6ddaa3977.png %}
發布包
這里將 Satis 作為 Composer 包私有倉庫,以 GitHub 作為包代碼托管倉庫,列出大致的包發布流程:
- 先將需要發布的包發布到代碼管理倉庫,例如 GitHub;
直接 fork 阿里云 OSS 官方 SDK 封裝,地址為:git@github.com:fan-haobai/yii2-aliyun-oss.git,并打一個 V1.0.0 版本的標簽,這樣 Satis 默認可以將 tag 名稱作為包版本號。
- 在配置文件
satis.json
中增加包倉庫地址,以及索引版本;
"repositories": [
... ...
{
"type": "vcs",
"url": "git@github.com:fan-haobai/yii2-aliyun-oss.git"
}
... ...
"require": {
... ...
"chonder/yii2-aliyun-oss": "^1.0.0" #包composer.json中的name
... ...
}
- 執行
build.sh
腳本更新索引;
出現以下內容即為包索引更新成功。
Installing chonder/yii2-aliyun-oss (V1.0.0) Downloading: 100% Extracting archive
安裝包
切換包倉庫地址
需要安裝 Satis 索引的 Composer 包,只需在項目的composer.json
文件中將 repositories 配置為 Satis 倉庫地址即可。
{
"config": {
"process-timeout": 1800,
"secure-http": false
},
"repositories": [{
"type": "composer",
"url": "http://packagist.fanhaobai.com"
}]
}
config 項用于設置超時時間和 https,如果 Satis 站點是 http 協議,則將secure-http
設置為 false。
安裝包
在項目的composer.josn
同目錄下,運行:
$ composer require chonder/yii2-aliyun-oss:^1.0.0
出現如下信息則安裝包成功。
Package operations: 1 install, 0 updates, 0 removals
- Installing chonder/yii2-aliyun-oss (V1.0.0): Downloading (100%)
Writing lock file
Generating autoload files