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欄目!