热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

给公司写的composer包开发的规范,分享

版本格式主版本号.次版本号.修订号版本号递增规则主版本号:当你做了不兼容的API修改次版本号:当你做了向下兼容的功能性新增修订号:当你做了向下兼容的问题修正先行版本号及版本编译元数


版本格式

主版本号.次版本号.修订号

版本号递增规则

  • 主版本号:当你做了不兼容的 API 修改

  • 次版本号:当你做了向下兼容的功能性新增

  • 修订号:当你做了向下兼容的问题修正

  • 先行版本号及版本编译元%ignore_a_1%可以加到“主版本号.次版本号.修订号”的后面,作为延伸。

发布 1.0.0 版本的时机

  1. 被用于正式环境

  2. 如果有个稳定的 API 被使用者依赖

  3. 如果很担心向下兼容的问题

总而言之,由于0.x版本在机制和语义上和大于1.0的版本有一定差异,容易产生误用,被用于生产环境的包的版本号都必须>=1.0

composer.lock的规范

开发应用程序必须提交 composer.lock 文件到 git 版本库中

这会确保每一个人 —— 你、你的合作伙伴、你的 CI 服务器以及你的产品服务器 —— 所运行的应用程序拥有相同依赖的版本。

开发库不需要提交composer.lock

该文件对使用该库的项目不会有任何影响,无法达到限制版本的目的

composer.json中依赖版本的规范

不允许在项目中使用不限定版本的方式

由于主版本的升级可能伴随着api的不兼容,如果require * 这种不限定版本的方式很可能带来不兼容的隐患,所以推荐至少锁定主版本号

例如

目前使用xxx/service的1.0.0版本,则请写~1.0或者^1.0.0,这样效果等同于>= 1.0且<2.0,如果第三方使用时引用了xxx/service的2.0版本且引用了你的依赖1.0的版本,则会安装出错,立刻引起注意

如果 require * 则安装会正常进行,但是可能发生使用时的意外(api不兼容)

版本号锁定中^和~的重要区别

~的作用

~ 的作用是允许表达式中最后一位变到最大值

给公司写的composer包开发的规范,

 

^的作用

++^ 锁定的是x.y.z版本号中从左到右非0的第一个版本号的版本++

比如^ 1.2.3 为锁定主版本号1;而^ 0.1.2则为锁定0.1;^ 0.0.3则为锁定0.0.3版本

所以^ 的行为在>=1.0和<1.0的情况下存在特殊情况,使用时请特别注意,

  1. 版本大于1.0.0的情况

^ 锁定不允许变的第一位

给公司写的composer包开发的规范,

 

 

  1. 版本为0.x的情况

^锁定的是从左到右非0的第一个版本号的版本

给公司写的composer包开发的规范,

 

 

  • 以上是文章全部内容,有需要学习交流的友人请加入Swoole交流群的咱们一起,有问题一起交流,一起进步!前提是你是学技术的。感谢阅读!

点此加入该群

 

www.dengb.comtruehttp://www.dengb.com/PHPjc/1382315.htmlTechArticle给公司写的composer包开发的规范, 版本格式 主版本号.次版本号.修订号 版本号递增规则 主版本号:当你做了不兼容的 API 修改 次版本号:…

—-想了解更多的php相关异常处理怎么解决关注<编程笔记>


推荐阅读
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom&amp;quot;echarts&amp;quot;;4、如果用到map(地图),还 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • WCF类型共享的最佳实践
    在使用WCF服务时,经常会遇到同一个实体类型在不同服务中被生成为不同版本的问题。本文将介绍几种有效的类型共享方法,以解决这一常见问题。 ... [详细]
  • 基于iSCSI的SQL Server 2012群集测试(一)SQL群集安装
    一、测试需求介绍与准备公司计划服务器迁移过程计划同时上线SQLServer2012,引入SQLServer2012群集提高高可用性,需要对SQLServ ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • 本文介绍了如何使用Postman构建和发送HTTP请求,包括四个主要部分:方法(Method)、URL、头部(Headers)和主体(Body)。特别强调了Body部分的重要性,并详细说明了不同类型的请求体。 ... [详细]
  • Bootstrap 插件使用指南
    本文详细介绍了如何在 Web 前端开发中使用 Bootstrap 插件,包括自动触发插件的方法、插件的引用方式以及具体的实例。 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • 本文将详细介绍如何在Android Studio中导入和编译OSChina Android 2.4版本的源码。包括所需软件、下载地址以及一些注意事项。 ... [详细]
  • python模块之正则
    re模块可以读懂你写的正则表达式根据你写的表达式去执行任务用re去操作正则正则表达式使用一些规则来检测一些字符串是否符合个人要求,从一段字符串中找到符合要求的内容。在 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • 本文详细介绍了如何在 Linux 系统上安装 JDK 1.8、MySQL 和 Redis,并提供了相应的环境配置和验证步骤。 ... [详细]
  • 在 CentOS 6.4 上安装 QT5 并启动 Qt Creator 时,可能会遇到缺少 GLIBCXX_3.4.15 的问题。这是由于系统中的 libstdc++.so.6 版本过低。本文将详细介绍如何通过更新 GCC 版本来解决这一问题。 ... [详细]
author-avatar
图片哪天能显示
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有