conseguir que el informe de cobertura de Nueva York / Estambul funcione con mecanografiado

Estoy luchando por obtener una cobertura adecuada con nyc / istanbul para mi proyecto mecanografiado / mocha / gulp. He intentado varios enfoques, algunos de ellos parecen ser incapaces de usar mapas de origen y otros fallan debido ats-node/tsc errores Mi configuración actual es:

nyc configuración relevante enpackage.json

"scripts": {
    "test:coverage": "nyc npm run test:unit",
    "test:unit": "gulp mocha"
}
"nyc": {
    "check-coverage": true,
    "all": true,
    "extension": [
      ".js",
      ".jsx",
      ".ts",
      ".tsx"
    ],
    "include": [
      "src/**/!(*.test.*).[tj]s?(x)"
    ],
    "reporter": [
      "html",
      "lcov",
      "text",
      "text-summary"
    ],
    "report-dir": "docs/reports/coverage"
  }

gulpfile.js mocha parte relevante

const SRC_DIR = path.join(__dirname, 'src');
const SRC_FILES = path.join(SRC_DIR, '**', '*.[jt]s?(x)');
const TEST_FILES = path.join(SRC_DIR, '**', '*.test.[jt]s?(x)');
const MOCHA_CONFIG = {
    src: [
        TEST_FILES
    ],
    watchSrc: [
        SRC_FILES,
        TEST_FILES
    ],
    mocha: {
        // compilers: [
        //     'ts:ts-node/register',
        //     'tsx:ts-node/register'
        // ],
        require: [
            './tests/setup.js',
            'ignore-styles',
            'source-map-support/register'
        ]
    }
};
gulp.task('mocha', mocha(MOCHA_CONFIG));

tsconfig.json

{
  "compilerOptions": {
    "baseUrl": "./",
    "rootDir": "./src",
    "outDir": "./build",
    "allowJs": true,
    "module": "commonjs",
    "target": "es5",
    "lib": ["es5", "es6", "dom"],
    "sourceMap": true,
    "inlineSourceMap": false,
    "inlineSources": false,
    "experimentalDecorators": true,
    "noUnusedParameters": true,
    "noUnusedLocals": true,
    "jsx": "react",
    "moduleResolution": "node"
  },
  "exclude": [
    "docs",
    "tests",
    "**/*.test.js",
    "**/*.test.jsx",
    "**/*.test.ts",
    "**/*.test.tsx",
    "tools",
    "gulpfile.js",
    "node_modules",
    "build",
    "typings/main",
    "typings/main.d.ts"
  ],
  "awesomeTypescriptLoaderOptions": {
    "useCache": true,
    "useBabel": true
  }
}

Con la configuración anterior, la cobertura produce resultados para todos los archivos, pero son incorrectos para los archivos TS, probablemente debido a que los mapas de origen no se utilizan (es decir, el informe no muestra cobertura para las líneas que son comentarios y los números también parecen estar equivocados).

Con una serie de enfoques variados probados sin éxito, uno de los más comúnmente sugeridos es agregar"require": ["ts-node/register"] anyc configuración todavía, entonces recibo errores quejándome, es decirgulpfile.js, docs/reports/coverage/lcov-report/prettify.js y número de otros archivos JS para sernot under 'rootDir' lo cual es correcto pero no está claro por quéts-node intenta procesar todos los archivos desrc incluso si están excluidos entsconfig.json (Todavía la configuración se vuelve realmente compleja).

Agradecería cualquier sugerencia sobre qué camino tomar para obtener un informe de cobertura adecuado para los archivos TS.

Respuestas a la pregunta(1)

Su respuesta a la pregunta