前端工程化了解

33 阅读2分钟

一、SemVer:版本规范

SemVer(语义版本) 是一种版本号规范,旨在为软件项目提供一致的版本命名和发布策略。SemVer 遵循一组简单的规则,由三个数字组成:MAJOR.MINOR.PATCH

  • MAJOR(主版本号): 当进行不兼容的 API 更改时,增加主版本号。
  • MINOR(次版本号): 当添加向后兼容的功能时,增加次版本号。
  • PATCH(修订号): 当进行向后兼容的 bug 修复时,增加修订号。

例如,版本号 1.2.3 中,1 是主版本号,2 是次版本号,3 是修订号。

SemVer 还允许在版本号后添加预发布版本信息和构建信息。预发布版本信息使用 -,构建信息使用 +。例如,1.2.3-alpha.1+build-001 表示预发布版本 alpha.1,同时包含构建信息 build-001

SemVer 的好处在于,开发者和用户可以通过版本号快速了解新版本的含义,以及在更新时可以期望什么样的变化。SemVer 有助于确保在软件开发中保持向后兼容性,并为用户提供清晰的版本迁移路径。

SemVer 的官方规范可以在 Semantic Versioning 2.0.0 找到。许多开源项目都采用 SemVer 作为版本管理的标准。

二、monorepo:多包管理规范

Monorepo 是指将多个相关项目(通常是代码仓库)组合到一个单一的版本库(repository)中。"Mono" 是 "单一" 的意思,而 "repo" 是 "仓库" 的缩写。在软件开发中,Monorepo 是一种管理项目的方式,其中包含多个子项目或模块,这些子项目可以相互依赖,同时共享一组配置文件、工具和构建过程。

Monorepo 的特点包括:

  1. 统一版本控制: 所有的子项目都使用相同的版本号,这使得跨项目协同工作和版本管理更加容易。
  2. 共享代码和模块: 子项目可以直接引用其他子项目中的代码,无需发布到 npm 或其他包管理器。
  3. 共享配置和工具: 一套通用的配置文件和工具,例如 ESLint、Babel 配置等,可以在整个 Monorepo 中共享和维护。
  4. 集中式管理: 所有项目都在同一个版本库中,方便统一管理、构建和测试。
  5. 更容易的跨项目重构: 由于所有代码都在一个仓库中,进行跨项目的重构或修改变得更加简单。
  6. 简化依赖管理: 依赖关系可以在同一个版本库中管理,减少了模块之间的复杂性。

一些工具和平台,如 Lerna、Yarn Workspaces、nx Workspace(Angular CLI 的一部分)、Rush Stack(Microsoft 出品),提供了对 Monorepo 的支持,帮助简化 Monorepo 的配置和管理。