重構 Composer 源管理工具 CRM 爲 composer 插件

CRM 是我好久以前爲管理 composer 源作的一款命令行工具,旨在經過簡單的命令在多箇中國鏡像切換,從而方便的管理它們;php

那個時候我對 composer 插件瞭解不是特別多,因此作法比較也粗暴,底層經過執行 composer 命令來達到切換源的目的,在linux 上用起來還好幾乎沒有特別的感知,但 win 上就會有些遲鈍了。這也是顯而易見的畢竟切換的時候至關於同時執行了多個命令;後來因爲工做的機會了解了一下 composer 插件的開發,因此也就萌生了重構的念頭;linux

與 1.x 版本相比,2.x 主要有下面一些改變:laravel

元數據存儲位置改變

在 1.x 版本中是在用戶的 Home 文件夾下自定義的一個文件,用戶全部的操做都最終持久化到這個 json 文件裏去;新版則將元數據存儲到了 composer 全局路徑下的 config.json 裏:git

{
    "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 生態github

命令的改變

1.x 版本是個獨立入口應用,命令都是以crm關鍵詞開始,好比 crm ls 之類的;在新版插件化裏 crm變成了一個命令提供者 (command provider) 角色,因此在新版咱們使用 composer 入口;json

新版用法

列出全部可以使用的鏡像

$ 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

標「*」表示當前正在使用的源;bash

切換鏡像

$ composer repo:use
Please select your favorite registry (defaults to composer)
  [0] composer
  [1] phpcomposer
  [2] composer-proxy
  [3] laravel-china
 >

你也能夠直接追加鏡像名稱來跳過選擇composer

$ composer repo:use phpcomposer

添加選項 --current/-c 爲當前項目切換源,默認是修改全局的源。ide

全部命令

執行下面命令查看工具

$ composer repo

總結

除了用法上的改變,新版最顯著的多是速度上的提高;若有問題歡迎反饋,在帖子下留言或者到 github issues 發帖都可。
但願這個小工具會給你們在工做開發中帶來方便。

附上項目地址: https://github.com/slince/composer-registry-manager

相關文章
相關標籤/搜索