将 Spartacus 降级到新的次要版本(例如,从 3.x 到 4.0)时,Spartacus 迁徙机制会主动修复新版本中批改或删除的代码。
当您解决性能或谬误,或对 Spartacus 源代码进行任何其余更改时,您须要更新原理图作为实现定义的一部分。 通过将这些更新迭代地作为 DoD 的一部分对源代码进行每次更改,您就不用在开发周期完结时破费大量工夫降级迁徙机制,因而,它更容易 为新的次要版本筹备 Spartacus 库。
Migration Mechanism
降级到新的次要版本后,迁徙机制应该在新的开发周期开始时更新。 比方Spartacus曾经从2.x版本更新到3.0,更新后的机制应该尽快合并到develop分支。 这容许贡献者从开发周期的一开始就蕴含迁徙及其性能和谬误修复。
Structure for Updating Schematics
上面这个文件蕴含了每个 Spartacus 版本对应的迁徙脚本:
projects/schematics/src/migrations/migrations.json
上面是其中一个迁徙脚本的例子:
"migration-v3-constructor-deprecations-03": { "version": "3.0.0", "factory": "./3_0/constructor-deprecations/constructor-deprecations#migrate", "description": "Add or remove constructor parameters" },
26 个子文件:
以 v3 为例:
每个脚本有四个属性:name,version, factory 和 description:
name 容许开发人员疾速理解迁徙脚本在做什么。 迁徙名称具备以下模式:
migration-v<version>-<migration-feature-name>-<sequence-number>。
name的因素如下:
- version:
批示迁徙实用于哪个版本的 Spartacus。 - migration-feature-name:
迁徙性能名称是一个简短的名称,用于形容迁徙正在执行的操作。
- sequence-number: 序列号批示迁徙脚本的执行程序。 例如,如果脚本的序列号为 03,则在运行迁徙脚本时,它将是要执行的第三个脚本。
版本对于 Angular 更新机制十分重要。 它用于主动运行特定版本所需的迁徙脚本。 无关更多信息,请参阅原理图自述文件的公布更新原理图局部。
factory 指向相干的迁徙脚本。
description 是一个简短的、自在格局的形容字段,用于形容迁徙脚本的作用。
Constructor Deprecation
projects/schematics/src/migrations/2_0/constructor-deprecations.ts 执行构造函数迁徙工作。 通常,开发人员不须要接触这个文件,而是应该在projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts 中形容构造函数的弃用。 CONSTRUCTOR_DEPRECATION_DATA 常量形容了已弃用的构造函数,并包含 addParams 和 removeParams 属性,它们容许您别离指定应增加或删除哪些参数。
Commenting Code
当无奈主动迁徙代码时,咱们通常会在客户的代码库中增加正文,形容客户应该如何将他们的我的项目降级到新版本的 Spartacus。 咱们应该只在手动降级很容易并且编写迁徙脚本太简单的状况下才这样做。
projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier 办法在指定标识符 TypeScript 节点上方增加正文。
以下是如何增加评论的示例:
- 如果您删除了一个 API 办法,您能够在删除的办法上方增加一条正文,倡议能够改用哪个办法。
- 如果您更改了 NgRx 操作的参数,您能够在更改参数的操作上方增加正文。
Component Deprecation
与构造函数弃用相似,projects/schematics/src/migrations/2_0/component-deprecations.ts 为组件 *.ts 和 HTML 模板执行组件迁徙工作。 通常,开发人员不须要接触这个文件,而是应该在projects/schematics/src/migrations/2_0/component-deprecations-data.ts 中形容组件的弃用。 COMPONENT_DEPRECATION_DATA 常量形容了已弃用的组件。
CSS
为了解决 CSS 更改,咱们打印了一个指向 CSS 迁徙文档的链接,客户能够在其中查找哪些 CSS 选择器在新版本的 Spartacus 中产生了更改。 如果您要更改 CSS 选择器,只需更新相干文档(例如 3.0 中的款式更改)。
Adding a Migration
(1) 查看是否有任何更改的文件在公共 API 中导出。 如果否,则无需采取进一步措施。
(2) 查看您所做的任何更改是否是破坏性更改。 如果没有,则无需采取进一步措施。 无关更多信息,请参阅保护公共 API。
(3) 对于每个重大更改,您必须执行以下操作:
a. 通过更新相应的迁徙文档文件(例如 docs/migration/3_0.md)来记录重大更改,并在必要时确保已增加代码正文。
b. 构建自动化工作,如下面的验证、构造函数弃用和组件弃用)局部所述。
c. 通过运行测试、尝试迁徙示例应用程序等来测试增加的迁徙。
更多Jerry的原创文章,尽在:"汪子熙":