Angular 13执行ng serve时customWebpackConfig配置报错解决方案
问题现象
项目从Angular 11升级至Angular 13,所有组件依赖均更新为最新版本,执行ng build --configuration production命令一切正常,angular.json无任何报错,但执行ng serve时custom-webpack Angular构建器无法正常运行,项目依赖自定义webpack插件CSS Purge实现CSS优化,配置可用性必须保证。
报错信息
Schema validation failed with the following errors: Data path "" must NOT have additional properties(customWebpackConfig).
根因说明
适配Angular 13的@angular-builders/custom-webpack v13+版本中,@angular-builders/custom-webpack:dev-server构建器不再支持在serve节点下单独配置customWebpackConfig属性,该配置会自动继承serve配置中browserTarget指向的build节点的custom-webpack配置,重复声明会触发schema校验错误。
解决方案
直接删除angular.json中serve节点下的customWebpackConfig相关配置即可,修改后的serve节点配置如下:
"serve": { "builder": "@angular-builders/custom-webpack:dev-server", "options": { "browserTarget": "newwebsite-app:build", "port": 10150 }, "configurations": { "production": { "browserTarget": "newwebsite-app:build:production" } } }
修改后自定义webpack配置仍会正常生效,不会影响CSS Purge优化功能,ng serve和ng build命令均可正常运行。
注:升级Angular 13过程中已完成的配置调整可保留:移除
extractCss: true配置项、替换为inlineCriticalCss选项、build配置中设置buildOptimizer: false,以上配置均不影响本次修复效果。
内容的提问来源于stack exchange,提问作者Carlos Torrecillas

