为什么要使用别名?
发布时间 - 2019-10-28 00:00:00 点击率:次下面由composer教程栏目给大家介绍使用分支别名的原因,希望对需要的朋友有所帮助!
为什么要使用别名?
当你使用版本控制系统仓库时,你只能从那些看起来像版本的分支得到一个可比较的版本,例如 2.0 或 2.0.x 。对于 master 分支,你只能得到一个 dev-master 版本。对于 bugfix 分支,你将得到 dev-bugfix 版本。
如果你的 master 分支是用来标记 1.0 的开发流程,如 1.0.1 , 1.0.2 , 1.0.3 等,依赖于你的库的包可能需要的是 1.0.* 。
如果有人想要使用最新的 dev-master ,将会遇到一个问题:有的包可能需要的是 1.0.* ,所以这两个将会导致冲突,因为 dev-master 并不匹配 1.0.* 。
基于以上,别名出现了。
分支别名
dev-master 分支是主 VCS 仓库中的一个。有些人会想要最新的主开发版本,这是很常见的。因此,Composer 允许您将 dev-master 分支别名为 1.0.x-dev 版本。它是通过在 composer.json 中指定 extra 下的 branch-alias 字段来完成的:
{
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
}
}如果别名为不可比较的版本 (例如 dev-develop),则必须为分支名称添
加前缀 dev- 。您也可以为可比较的版本添加别名(即以数字开头,以 .x-dev 结尾),但只作为更具体的版本。例如,1.x-dev 可以被别名为 1.2.x-dev。
别名必须是可比较的开发版本,并且 branch-alias 必须出现在它引用的分支上。对于 dev-master 您需要在 master 分支上提交它。
因此,很多人现在都需要 1.0.* 并且他将很乐意安装 dev-master 。
要使用分支别名,您必须拥有别名的包的存储库。如果要为第三方包添加别名而不维护它的分支,请使用,内联别名,如下所述。
需要内联别名
分支别名对于主要开发线非常有用。但是为了使用它们,您需要控制源存储库,并且需要提交对版本控制的更改。
当您想尝试某个库的错误修复时,这并不是很有趣,该库是本地项目的依赖项。
因此,您可以在 require and require-dev 字段中对包进行别名。假设您在 monolog/monolog 包中发现了一个错误。您在 GitHub 上克隆了 Monolog 并在一个名叫 bugfix 的分支中解决了这个问题。现在,您要在本地项目中安装该版本的 monolog 。
您使用的是 symfony/monolog-bundle ,需要 monolog/monolog 版本 1.* 。因此,您需要使用 dev-bugfix 来匹配该约束。
将其添加到项目的根 composer.json 中:
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/you/monolog"
}
],
"require": {
"symfony/monolog-bundle": "2.0",
"monolog/monolog": "dev-bugfix as 1.0.x-dev"
}
}这将从您的 Github 获取 monolog/monolog 的 dev-bugfix 的版本,并将其别名为 1.0.x-dev 。
注意:内联别名是仅限 root 用户使用的功能。如果需要具有内联别名的包,则使用别名(as 的右侧)用作版本约束。 as 的左边部分被丢弃了。因此,如果 A 需要 B 和 B 需要 monolog/monolog 版本 dev-bugfix 为 1.0.x-dev ,则安装 A 也将使 B 也需要 1.0.x-dev ,其可能作为分支别名或实际的 1.0 分支存在。如果没有,则必须在 A 的 composer.json 中再次进行内联别名。
注意:应避免使用内联别名,尤其是对于已发布的包 / 库。如果您发现了错误,请尝试将您的修复程序合并到上游,这有助于避免使用您包的用户出现问题。
更多composer技术文章,请访问composer命令使用教程栏目!
# composer
# 的是
# 您的
# 您需要
# 将会
# 您在
# 要使
# 这是
# 发现了
# 如果您
# 尤其是
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
Laravel如何使用Gate和Policy进行授权?(权限控制)
Laravel如何使用Eloquent进行子查询
Android使用GridView实现日历的简单功能
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】
Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
Bootstrap CSS布局之列表
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
如何在香港服务器上快速搭建免备案网站?
HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
jQuery中的100个技巧汇总
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
香港服务器建站指南:免备案优势与SEO优化技巧全解析
Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解
EditPlus中的正则表达式 实战(2)
如何在香港免费服务器上快速搭建网站?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
JS经典正则表达式笔试题汇总
西安专业网站制作公司有哪些,陕西省建行官方网站?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道
Laravel如何处理CORS跨域请求?(配置示例)
Laravel如何集成Inertia.js与Vue/React?(安装配置)
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
Laravel中的Facade(门面)到底是什么原理
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
JavaScript如何实现错误处理_try...catch如何捕获异常?
如何批量查询域名的建站时间记录?
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
JS弹性运动实现方法分析
如何生成腾讯云建站专用兑换码?
JS碰撞运动实现方法详解
如何在万网开始建站?分步指南解析
手机网站制作与建设方案,手机网站如何建设?
PHP正则匹配日期和时间(时间戳转换)的实例代码
JavaScript如何操作视频_媒体API怎么控制播放
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
独立制作一个网站多少钱,建立网站需要花多少钱?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧

