下面由composer使用教學欄位為大家講解如何重構Composer來源管理工具CRM為Composer插件,希望對需要的朋友有幫助!
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
所有指令
執行下面指令查看$ composer repo / ___| | _ \ / |/ | | | | |_| | / /| /| | | | | _ / / / |__/ | | | |___ | | \ \ / / | | \_____| |_| \_\ /_/ |_| Composer Repository Manager version 2.0.0 Usage: command [options] [arguments] Options: -h, --help Display this help message -q, --quiet Do not output any message -V, --version Display this application version --ansi Force ANSI output --no-ansi Disable ANSI output -n, --no-interaction Do not ask any interactive question -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug Available commands for the "repo" namespace: repo:add Creates a repository repo:ls List all available repositories repo:remove Remove a repository repo:use Change current repository
總結
除了用法上的改變,新版最顯著的可能是速度上的提升;如有問題歡迎回饋,在貼文下留言或到github issues 發文皆可。 希望這個小工具會為大家在工作開發上帶來方便。 附上專案地址:https://github.com/slince/composer-registr...
以上是重構Composer來源管理工具CRM為Composer插件的詳細內容。更多資訊請關注PHP中文網其他相關文章!