• 技术文章 >开发工具 >composer

    如何重构Composer源管理工具CRM为composer插件

    藏色散人藏色散人2020-02-26 15:03:27转载1300

    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中文网其它相关文章!

    声明:本文转载于:segmentfault,如有侵犯,请联系admin@php.cn删除
    专题推荐:Composer
    上一篇:codeigniter3集成composer管理工具 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • Composer依赖管理(PHP利器)• 解决composer 报 zlib_decode(): data error错误• 关于 composer 易忽略的知识• codeigniter3集成composer管理工具
    1/1

    PHP中文网