在您迁移到 4.0 版库之前,我们强烈建议您切换到新的应用程序结构和新的功能库。 在多个小步骤中进行迁移更容易(迁移到新的应用程序结构,切换到提取的功能库,然后迁移到 4.0),您可以确保在每一步之后一切仍然像以前一样工作。 如果您需要了解我们为何引入此更改的更多信息,请阅读下一章。
在 3.0 版本之前,我们开始根据其职责分离库。在 3.0 中,我们已经在单独的包中发布了一些库(例如@spartacus/organization、@spartacus/storefinder)。我们也在次要 3.x 版本中继续移动更多的库。我们试图以一种没有破坏性变化的方式做到这一点。但是,对于每个主要版本,我们都希望偿还在次要版本中积累的技术债务。提取的库是技术债务的巨大贡献者,因为我们在两个地方保留了相同的功能。在 4.0 版本中,我们将从核心库(@spartacus/core、@spartacus/storefront、@spartacus/assets 和 @spartacus/styles)中删除这些功能,这些功能已经在次要版本中被提取到单独的库中。
在此过程中,我们发现我们不得不更改一些较大的模块以适应这些更改(例如 B2cStoreFrontModule、StorefrontModule 或 CmsLibModule)。
所以这就是为什么我们建议切换到不使用这些模块的新应用程序结构,并切换到新功能库(如果它们存在于您正在使用的功能)。您可以在下面找到有关如何操作的通用指南。之后迁移到 4.0 应该会更容易。
在将 Spartacus 升级到 4.0 之前,您需要先将 Angular 升级到 12 版,并将 Angular 3rd 方依赖项(如@ng-bootstrap/ng-bootstrap 或 @ng-select/ng-select)升级到与 Angular 12 兼容的版本。
ng update @ng-bootstrap/ng-bootstrap@10 @ng-select/ng-select@7 @angular/core@12 @angular/cli@12
“发布”的库是新的、官方的、经过测试的 Spartacus 库,可供公众使用(托管在 npmjs.com 上)
我们通常每 2 周发布一次新库
次要更改意味着我们添加了新功能,但默认情况下将它们配置为关闭,以免引起兼容性问题。新的次要也意味着包含可能影响兼容性的更改或错误修复,但这些也由功能标志 feature flags 控制。因此,所有重大更改都是“选择加入 opt in”。有关更多信息,请参阅功能标志文档。
我们通常会在新的次要版本发布前几周发布标记为“下一个”的预发布库。目标是提供对新功能的早期访问并从社区获得反馈。
如果您选择不使用新功能,则升级到新的 Major.# 应该没有问题,并将 features 标志设置为以前的 Major.#。如果您确实发现问题,请报告错误,我们将对其进行评估和修复。我们鼓励您在开发过程中经常升级到最新的库,以利用错误修复和新功能。
为了能够使用 Spartacus 3.* 中的所有功能,需要 SAP Commerce Cloud 2005 版。例如,2005 版包含用于 B2B 商务组织的 OCC API。此外,需要或至少强烈推荐最新的补丁版本,因为它通常包含影响 Spartacus 的错误修复(例如,ASM 需要 1905.5,而 Save for later 功能需要 1905.11)。 Spartacus 3.* 也经过了 1905 版的测试和使用。但是请注意,如果您使用的是 SAP Commerce Cloud 1905,则依赖于 2005 年引入的新 API(例如取消和退货)的 Spartacus 功能将不可用。了解更多有关特定功能需要哪个版本的 Spartacus 和哪个版本的 SAP Commerce Cloud 的信息,请参阅功能兼容性。
一个命令行升级到 4.0:
ng update @spartacus/schematics@4
更新完成运行后,检查您的代码中是否有以 // TODO:Spartacus 开头的注释。 有关每个添加评论的详细信息,请参阅下面的详细更改列表。
https://github.com/SAP/spartacus/blob/develop/docs/migration/4_0.md#detailed-list-of-changes