···231231232232## Coverage
233233234234-Coverage for workspace projects works out of the box. But if you have [`all`](/config/#coverage-all) option enabled and use non-conventional extensions in some of your projects, you will need to have a plugin that handles this extension in your root configuration file.
235235-236236-For example, if you have a package that uses Vue files and it has its own config file, but some of the files are not imported in your tests, coverage will fail trying to analyze the usage of unused files, because it relies on the root configuration rather than project configuration.
234234+Coverage for workspace projects works out of the box.
+3-1
packages/coverage-istanbul/src/provider.ts
···414414 const cacheKey = new Date().getTime()
415415 const coverageMap = libCoverage.createCoverageMap({})
416416417417+ const transform = this.createUncoveredFileTransformer(this.ctx)
418418+417419 // Note that these cannot be run parallel as synchronous instrumenter.lastFileCoverage
418420 // returns the coverage of the last transformed file
419421 for (const [index, filename] of uncoveredFiles.entries()) {
420422 debug('Uncovered file %s %d/%d', filename, index, uncoveredFiles.length)
421423422424 // Make sure file is not served from cache so that instrumenter loads up requested file coverage
423423- await this.ctx.vitenode.transformRequest(`${filename}?v=${cacheKey}`)
425425+ await transform(`${filename}?v=${cacheKey}`)
424426 const lastCoverage = this.instrumenter.lastFileCoverage()
425427 coverageMap.addFileCoverage(lastCoverage)
426428 }