专栏首页Web技术布道师给公司写的composer包开发的规范

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

版本格式

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

版本号递增规则

  • 主版本号:当你做了不兼容的 API 修改
  • 次版本号:当你做了向下兼容的功能性新增
  • 修订号:当你做了向下兼容的问题修正
  • 先行版本号及版本编译元数据可以加到“主版本号.次版本号.修订号”的后面,作为延伸。

发布 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不兼容)

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

~的作用

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

符号

效果

~0.0.1

>= 0.0.1 且 < 0.1.0

~0.1.1

>= 0.1.1 且 < 0.2.0

~0.1

>= 0.1.0 且 < 1.0.0

~1.1

>= 1.1 且 < 2.0.0

^的作用

++^ 锁定的是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的情况

^ 锁定不允许变的第一位

符号

效果

^ 1.2

>= 1.2 且 < 2.0

^ 1.3.1

>= 1.3.1 且 < 2.0

  1. 版本为0.x的情况

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

符号

效果

^0.0.1

>= 0.0.1 且 < 0.0.2

^0.1.1

>= 0.1.1 且 < 0.2.0

^0.1

>= 0.1.0 且 < 0.2.0

本文分享自微信公众号 - PHP技术大全(phpgod)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 什么是API平台?

    API平台这个术语已经被一些具有API管理、完整生命周期API管理甚至术语API网关的供应商作为同义词使用。每个人都喜欢用“平台”这个词来为话题增添趣味,但什么...

    程序你好
  • Angular 网络连接状态组件

    在开发 Web 应用程序时,有时候我们需要获取当前的网络状态,然后根据不同的网络状态显示不同的提示消息或显示不同页面内容。对于原生应用、混合应用或提供 JS-S...

    semlinker
  • Quill 富文本编辑器简介

    Quill 是一个免费的,开源的 WYSIWYG (What You See Is What You Get)编辑器,专为现代网络而打造。凭借其模块化架构和富有...

    semlinker
  • JavaScript引擎相关名词

    薛定喵君
  • 滴滴跨端解决方案Chameleon(卡梅龙)1.0正式发布

    研发同学在端内既追求 h5 的灵活性,也要追求性能趋近于原生。 面对入口扩张,App 客户端、微信小程序、支付宝小程序、百度小程序、Android 厂商联盟快应...

    薛定喵君
  • Angular ElementRef 简介

    Angular 的口号是 - “一套框架,多种平台。同时适用手机与桌面 (One framework.Mobile & desktop.)”,即 Angular...

    semlinker
  • Redis中Sentinel节点

    因为Sentinel节点是一个特殊的Redis节点,所以它有自己的专属API。下面我们详细介绍一下Sentinel节点的API使用。

    吉林乌拉
  • Angular 工具篇之文档管理

    本文我们将介绍 Compodoc 这款工具,它用于为 Angular 应用程序生成静态文档。Compodoc 能够帮助 Angular开发人员为他们的应用程序生...

    semlinker
  • 开发一个爆款 VS Code 插件这么简单!

    ? 本文作者:cheeqi,腾讯 PCG 开发工程师。 这是一篇干货满满的介绍 vscode 插件开发的文章,先收藏在观看效果更佳。 vscode 提供了哪...

    腾讯技术工程官方号
  • Node.js 小打小闹之无头浏览器

    前线客服传来消息 — “用户反馈一打开我们的 App,就直接闪退了”,刚听到这个消息,我很吃惊,上一期发的新版本 QA 都有验证过。难道是因为功能权限的问题导致...

    semlinker

扫码关注云+社区

领取腾讯云代金券