Angular 8中xliffmerge配置报错求助:无项目支持extract-i18n目标
extract-i18n 目标不支持的问题 看起来你的脚本执行时遇到了Angular找不到对应项目extract-i18n目标的问题,我帮你梳理几个排查和解决的方向:
1. 先确认项目名称是否正确
Angular的项目名称是大小写敏感的,你脚本里写的IOCheck必须和angular.json中projects节点下的项目名称完全一致。打开你的angular.json,找到projects字段,检查里面的项目名是不是IOCheck——比如有可能实际项目名是小写的iocheck或者带后缀的IOCheck-app,拼写错误就会导致Angular找不到目标项目。
2. 检查项目的extract-i18n配置是否存在
即使你觉得angular.json没问题,也可以确认下对应项目的architect节点里有没有extract-i18n配置块。比如找到projects.IOCheck.architect,如果没有extract-i18n,手动添加一个基础配置:
"extract-i18n": { "builder": "@angular-devkit/build-angular:extract-i18n", "options": { "browserTarget": "IOCheck:build" } }
这里的browserTarget要和你项目的build目标对应,比如如果你的build配置是IOCheck:build:production,就改成对应的名称。
3. 调整脚本的命令格式
有些Angular版本里,指定项目的正确方式是用--project参数,而不是直接把项目名放在ng xi18n后面。修改你的package.json脚本为:
"extract-i18n": "ng xi18n --project IOCheck --i18n-format xlf --output-path i18n --i18n-locale fr && xliffmerge"
这样更明确地告诉Angular要操作哪个项目,避免解析错误。如果是较新的Angular版本,也可以试试用完整命令ng extract-i18n代替ng xi18n(两者是别名,但新版本可能更推荐完整命令)。
4. 确认默认项目配置(多项目工作区场景)
如果你的工作区有多个项目,检查angular.json根节点的defaultProject是不是设置为IOCheck。如果没设置,Angular会不知道默认操作哪个项目,这时候要么在命令里加--project参数,要么把defaultProject改成IOCheck。
5. 单独测试命令分步排查
先单独运行ng xi18n --project IOCheck --i18n-format xlf --output-path i18n --i18n-locale fr,看是否能正常生成xlf文件。如果这一步没问题,再加上&& xliffmerge,确认是xliffmerge的问题还是前面的Angular命令的问题。
内容的提问来源于stack exchange,提问作者Philippe Corrèges

