CRM 是我很久之前為管理composer 來源做的命令列工具,旨在透過簡單的命令在多個中國鏡像切換,從而方便的管理它們;
那時候我對composer 插件了解不是特別多,所以做法比較也粗暴,底層通過執行composer 命令來達到切換源的目的,在linux 上用起來還好幾乎沒有特別的感知,但win 上就會有些遲鈍了。這也是顯而易見的畢竟切換的時候相當於同時執行了多個命令;後來由於工作的機會了解了一下composer 插件的開發,所以也就萌生了重構的念頭;
與1.x版本相比,2.x 主要有以下一些改變:
元資料儲存位置改變
#在1.x 版本是在使用者的Home 資料夾下自訂的一個文件,使用者所有的操作都最終持久化到這個json 文件裡去;新版則將元資料儲存到了composer 全域路徑下的config.json 裡:
{ "config": { "_alias": { "val": "validate", "up": "update", "req-sf": "require symfony/event-dispatcher symfony/console", "req": "require", "i": "install" }, "_repositories": [{ "name": "composer", "url": "https://packagist.org", "homepage": "", "author": "" }, { "name": "phpcomposer", "url": "https://packagist.phpcomposer.com", "homepage": "", "author": "" }, { "name": "composer-proxy", "url": "https://packagist.composer-proxy.org", "homepage": "", "author": "" }, { "name": "laravel-china", "url": "https://packagist.laravel-china.org", "homepage": "", "author": "" }] }, "repositories": { "packagist": { "type": "composer", "url": "https://packagist.laravel-china.org" } } }
這個是composer 維護的一個文件,我們借用了一下在裡面佔用了一個欄位。這麼做也更符合了composer 生態
指令的改變
1.x 版本是個獨立入口應用,指令都是以crm關鍵字開始,像是crm ls 之類的;在新版外掛化裡crm變成了一個指令提供者(command provider) 角色,所以在新版我們使用composer 入口;
新版用法
#列出所有可使用的鏡像
$ composer repo:ls composer https://packagist.org phpcomposer https://packagist.phpcomposer.com * composer-proxy https://packagist.composer-proxy.org laravel-china https://packagist.laravel-china.org
標「*」表示目前正在使用的來源;
切換鏡像
$ composer repo:use Please select your favorite registry (defaults to composer) [0] composer [1] phpcomposer [2] composer-proxy [3] laravel-china >
你也可以直接追加鏡像名稱來跳過選擇
$ composer repo:use phpcomposer
新增選項- -current/-c 為目前專案切換來源,預設是修改全域的來源。
所有指令
執行下面指令查看
$ composer repo
總結
#除了用法上的改變,新版最顯著的可能是速度上的提升;如有問題歡迎回饋,在貼文下留言或到github issues 發文均可。
希望這個小工具會為大家在工作開發上帶來方便。
更多程式相關內容,請關注php中文網程式入門欄位!
以上是如何重構Composer來源管理工具CRM為composer插件的詳細內容。更多資訊請關注PHP中文網其他相關文章!