vue-jest升级后覆盖率下降

237 阅读1分钟

根本原因: @babel/core升级后变更了@babel/generator中source-map方法

一、coverageProvider配置为v8

coverageProvider: 'v8'

二、锁定@babel/generator

coverageProvider默认使用babel,当babel编译器不能正确识别vue的template的source-map问题。需要锁定babel版本

1. npm>=8

"overrides": {
  "@babel/core": "7.17.9",
  "@babel/generator": "7.17.9",
  "istanbul-lib-instrument": "5.2.0"
}

2. npm-force-resolutions

  1. 在script中添加 "preinstall": "npx npm-force-resolutions"
"resolutions": {  
  "@babel/core": "7.17.9",
  "@babel/generator": "7.17.9",
  "istanbul-lib-instrument": "5.2.0"
},

3. 锁定所有@babel/generator及其相关依赖。可以通过添加devDependenciespackage-lock.json中锁定

"devDependencies": {
    "@babel/generator": "7.17.9",
    "@babel/helper-create-class-features-plugin": "7.16.7",
    "@babel/helper-module-transforms": "7.16.7",
    "@babel/helper-remap-async-to-generator": "7.16.8",
    "@babel/helper-replace-supers": "7.16.7",
    "@babel/helper-wrap-function": "7.16.8",
    "@babel/helpers": "7.17.9",
    "@babel/plugin-proposal-async-generator-functions": "~7.17.0",
    "@babel/plugin-proposal-class-properties": "7.16.7",
    "@babel/plugin-proposal-class-static-block": "7.16.7",
    "@babel/plugin-proposal-decorators": "7.16.7",
    "@babel/plugin-proposal-optional-chaining": "7.12.7",
    "@babel/plugin-proposal-private-methods": "7.16.7",
    "@babel/plugin-proposal-private-property-in-object": "7.16.7",
    "@babel/plugin-transform-async-to-generator": "7.16.8",
    "@babel/plugin-transform-classes": "7.17.12",
    "@babel/plugin-transform-computed-properties": "7.16.7",
    "@babel/plugin-transform-modules-amd": "7.16.7",
    "@babel/plugin-transform-modules-commonjs": "7.16.7",
    "@babel/plugin-transform-modules-systemjs": "7.16.7",
    "@babel/plugin-transform-modules-umd": "7.16.7",
    "@babel/plugin-transform-object-super": "7.16.7",
    "@babel/preset-env": "7.16.7",
    "@babel/traverse": "7.17.9"
}