如何重构Composer源管理工具CRM为composer插件
发布时间 - 2020-02-26 00:00:00 点击率:次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 发帖均可。
希望这个小工具会给大家在工作开发中带来方便。
更多编程相关内容,请关注编程入门栏目!
# composer
# php
# json
# github
# linux
# 重构
# 关键词
# 镜像
# 多个
# 数据存储
# 就会
# 是个
# 是在
# 相关内容
# 也就
# 你也
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何使用 jQuery 正确渲染 Instagram 风格的标签列表
HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
如何快速辨别茅台真假?关键步骤解析
大连网站制作公司哪家好一点,大连买房网站哪个好?
Laravel怎么为数据库表字段添加索引以优化查询
Linux系统命令中screen命令详解
HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
轻松掌握MySQL函数中的last_insert_id()
Python自动化办公教程_ExcelWordPDF批量处理案例
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
Laravel中的Facade(门面)到底是什么原理
Laravel如何实现一对一模型关联?(Eloquent示例)
JS弹性运动实现方法分析
成都网站制作公司哪家好,四川省职工服务网是做什么用?
Laravel怎么上传文件_Laravel图片上传及存储配置
如何快速搭建高效WAP手机网站吸引移动用户?
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
java中使用zxing批量生成二维码立牌
如何挑选最适合建站的高性能VPS主机?
C语言设计一个闪闪的圣诞树
Python文本处理实践_日志清洗解析【指导】
Swift开发中switch语句值绑定模式
JavaScript如何实现音频处理_Web Audio API如何工作?
Python文件流缓冲机制_IO性能解析【教程】
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
如何安全更换建站之星模板并保留数据?
Android自定义listview布局实现上拉加载下拉刷新功能
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
JavaScript常见的五种数组去重的方式
佛山网站制作系统,佛山企业变更地址网上办理步骤?
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
Laravel如何实现事件和监听器?(Event & Listener实战)
详解jQuery中基本的动画方法
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
网站建设要注意的标准 促进网站用户好感度!
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
音乐网站服务器如何优化API响应速度?
Laravel如何发送系统通知?(Notification渠道示例)
html文件怎么打开证书错误_https协议的html打开提示不安全【指南】
教你用AI将一段旋律扩展成一首完整的曲子
如何快速使用云服务器搭建个人网站?
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
JS去除重复并统计数量的实现方法
Laravel怎么使用Intervention Image库处理图片上传和缩放
微信小程序 闭包写法详细介绍


,
"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"
}
}
}