monorepo使用melos执行GitHub Action无法生成coverage.lcov
问题原因
报错是因为Dart从2.12版本开始废弃了旧版.packages配置文件,统一使用.dart_tool/package_config.json管理包映射。你使用的coverage 1.5.0版本已经移除了对旧.packages文件的支持,命令中传入的--packages=.packages参数会让工具尝试解析已经被标记为废弃的旧文件,文件开头的注释行# This file is deprecated...不符合JSON格式要求,直接触发解析异常。
正确命令
直接移除命令中过时的--packages=.packages参数即可,新版format_coverage会自动读取当前目录下的标准包配置文件,不需要手动指定路径。
修改后的melos.yaml配置片段:
test:format: run: melos exec -c 1 -- format_coverage --lcov --check-ignore --in=coverage --out=coverage.lcov --report-on=lib description: Format Dart tests' coverage data select-package: flutter: false dir-exists: test
如果需要手动指定包配置路径,将参数替换为--packages=.dart_tool/package_config.json即可。
注意:前置的测试生成覆盖率原始数据步骤,需要通过
melos exec在每个子包目录单独执行dart test --coverage=coverage,不要在仓库根目录直接运行测试命令,否则会出现路径匹配错误。
内容的提问来源于stack exchange,提问作者user9836706
相关产品推荐
相关产品推荐

