非交互模式编程创建Spartacus项目时如何指定自定义功能列表
问题描述
当配置interactive=false参数,通过Schematics以编程方式创建新的SAP Spartacus项目时,常用执行命令如下:
ng add @spartacus/schematics@latest --skip-confirmation --interactive=false --base-url https://${FQDN} --pwa --base-site=powertools-spa --currency=usd --language=en,de --ssr
核心疑问:该场景下是否支持传入自定义的待启用功能列表,替换schema.json中预定义的默认功能集合?
对应的默认功能集合配置如下:
"default": [ "ASM", "Cart", "WishList", "Checkout", "Order", "Import-Export", "Saved-Cart", "Quick-Order", "Image-Zoom", "Product-Variants", "SmartEdit", "Store-Finder", "Personalization", "User-Account", "User-Profile" ]
诉求是通过单次命令完成所有功能配置,避免逐个手动安装额外功能包,逐包安装的操作示例如下:
ng add @spartacus/organization --skip-confirmation ng add @spartacus/product-configurator --features="VC-Configurator" --skip-confirmation
schema.json中定义的全部可用功能枚举值如下:
"enum": [ "ASM", "Import-Export", "Saved-Cart", "Quick-Order", "CDC", "CDS", "Cart", "WishList", "Checkout", "Checkout-B2B", "Checkout-Scheduled-Replenishment", "Order", "Digital-Payments", "EPD-Visualization", "Administration", "Order-Approval", "Bulk-Pricing", "Image-Zoom", "Product-Variants", "VC-Configurator", "Textfield-Configurator", "CPQ-Configurator", "Qualtrics", "SmartEdit", "Store-Finder", "Personalization", "TMS-GTM", "TMS-AEPL", "User-Account", "User-Profile" ]
解答
完全支持。
直接在执行ng add @spartacus/schematics命令时追加--features参数即可,参数值传逗号分隔的功能枚举值,传入后会直接覆盖默认的功能集合,不需要后续再逐包执行安装命令。
举个实际使用示例,如果需要同时启用组织管理、VC配置器、B2B结账能力,命令写法如下:
ng add @spartacus/schematics@latest --skip-confirmation --interactive=false --base-url https://${FQDN} --pwa --base-site=powertools-spa --currency=usd --language=en,de --ssr --features=ASM,Cart,WishList,Checkout,Checkout-B2B,Order,Administration,Order-Approval,Bulk-Pricing,VC-Configurator,Image-Zoom,Product-Variants,SmartEdit,Store-Finder,Personalization,User-Account,User-Profile
使用时需要注意几个规则:
- 传入
--features参数后不会自动加载默认功能列表,必须把你需要的所有功能(包括原本默认启用的基础功能)都列在参数值里,漏写的功能不会自动启用。 - 参数值里的功能名必须和枚举列表里的字符串完全一致,大小写、连字符都不能错,否则会触发参数校验报错。
- 只要是枚举列表里包含的功能,不管是基础功能还是B2B管理、产品配置器、TMS这类扩展功能,只要在features列表里声明,初始化时就会自动安装对应依赖、完成模块配置,不需要后续单独执行对应功能包的
ng add命令。
内容的提问来源于stack exchange,提问作者Nicola Beghin
相关产品推荐
相关产品推荐

