V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dandankele
V2EX  ›  程序员

语义化版本发布适用于传统 web 网站吗?

  •  
  •   dandankele · 2019-08-27 11:55:37 +08:00 · 3144 次点击
    这是一个创建于 1920 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们经常看到各种 app、前端包、后端各种库、框架之类都遵循了语义化版本来进行发布的,其好处也显而易见。

    但我在公司里是做传统 web 网站开发的,而且是单体应用架构。大大小小的修改一天需要上线很多次,现在都是直接在线上 git pull master 分支进行部署。 后来也在想,要不要对项目打 tag 发 release,那么用语义化版本是否可行?或者是否合适?

    我个人总感觉语义化版本只适合发包、发框架、发 API 这种频率较少的项目。

    11 条回复    2019-08-29 10:09:21 +08:00
    jsq2627
        1
    jsq2627  
       2019-08-27 12:04:55 +08:00
    semantic versioning 对普通 web 网站收益不大
    不过可以配合 git flow 规范来开发流程
    janus77
        2
    janus77  
       2019-08-27 12:10:55 +08:00 via iPhone
    语义化是便于理解,如果你是项目开发者不需要理解,项目使用者才需要。
    一个项目需要是对外提供服务,才会有使用者,所以操作系统平台 api 这类才需要
    mcfog
        3
    mcfog  
       2019-08-27 12:36:16 +08:00
    我不认为你理解什么是 semver,请看过 https://semver.org 再来聊
    dandankele
        4
    dandankele  
    OP
       2019-08-27 13:38:04 +08:00
    @mcfog 那你说说呢,什么是语义化版本
    不是为了项目发布而做的版本标记吗?并且版本标记拥有其特定的含义。那我一个网站项目也有从开发到发布的过程,我发布就不能用语义化版本吗?从而使得项目的维护者们了解正在部署的是什么版本?

    如果你认为我理解有误,请指出你的理解。因为现在不是讨论你所理解的语义化版本是什么,否则继续讨论该话题
    dandankele
        5
    dandankele  
    OP
       2019-08-27 13:45:41 +08:00
    @jsq2627 我目前所想的作用可能也就是用作团队项目规范了。

    像这样: https://semantic-release.gitbook.io
    由开发者遵循一套 git commit 约束,比如在 git commit 时,通过一些`fix:`、`feat:`、`docs:`、`BREAKING CHANGE`等 commit 约束来书写 commit 信息,然后再依赖 CI 对 commit 信息做分析,来决定打上语义化版本的 tag (依赖于前面所说的这些 commit 信息类型类改变 x.y.z 中的哪个数字),并且同时也能生成 release NOTE。

    可能我认为语义化版本对传统 web 项目的好处也就这些了吧,那我是不是可以不需要使用了
    jsq2627
        6
    jsq2627  
       2019-08-27 13:52:51 +08:00
    @dandankele #5 是的,就我所经历的大大小小的 web 项目,强上 semver 没有太大用处。经常出现大家都偷懒只改 patch 位,major/minor 位万年不变,不过好像也没什么不良影响
    jsq2627
        7
    jsq2627  
       2019-08-27 13:54:01 +08:00
    还不如打上发布日期 tag 以便将来更方便追溯线上 bug 出现时间
    shawndev
        8
    shawndev  
       2019-08-27 13:58:35 +08:00
    web 版本号对用户不可见,但并不妨碍拥有自己的版本号。react 也有自己的版本号不是吗,不过考虑到发版频繁可以在 major,minor 和 patch 后面增加 build 字段。
    msg7086
        9
    msg7086  
       2019-08-27 14:11:20 +08:00
    「为了让这套理论运作,你必须先有定义好的公共 API。」
    传统 Web 开发有「公共 API 」吗?

    而且用 semver 是为了让依赖者可以继续使用旧版的程序而不至于因为升级破坏依赖。
    如果有一个爬虫能读你们去年的网页,但是你们今年更新了页面结构,还会专门保留一份去年的页面给爬虫读吗。

    我觉得 3 楼说得没错,你还是没有理解 semver 到底是干啥的。
    dandankele
        10
    dandankele  
    OP
       2019-08-27 14:25:19 +08:00
    @msg7086 好吧,大概了解了,最主要的应该还是给使用的客户端、依赖端看的,那自己内部应该没必要使用了
    guxingke
        11
    guxingke  
       2019-08-29 10:09:21 +08:00
    Java 的二方包, version 命名规则

    190829.1007

    采用 release 时的时间.
    人可读,
    机器可比较.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2884 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:13 · PVG 23:13 · LAX 07:13 · JFK 10:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.