конфигурация jest coverageDirectory для проекта внутри monorepo

#jestjs #monorepo

#jestjs #monorepo

Вопрос:

У меня есть typescript monorepo с jest. Их jest.config.js

 module.exports = {
  clearMocks: true,
  projects: ['<rootDir>/packages/**/jest.config.js'],
  collectCoverage: true,
  coverageReporters: [
    "text-summary",
    "lcov",
  ],
  preset: 'ts-jest',
  testEnvironment: 'node',
  testMatch: ['*.spec.ts', '*.spec.tsx']
}
  

В server пакете я создаю jest.config.js с

 const { name } = require('./package.json');

module.exports = {
  displayName: name,
  name,
  'transform': {
    '^. \.ts$': 'ts-jest'
  },
  collectCoverageFrom: [
    '<rootDir>/src/**/*.ts'
  ],
  coverageDirectory: '<rootDir>/packages/server/src/tests/coverage',
}
  

Но когда я запускаю jest, он создает coverage каталог в корне моего monorepo.

Я просто пытаюсь использовать coverageDirectory: '<rootDir>/src/tests/coverage', , coverageDirectory: 'src/tests/coverage', и coverageDirectory: [__dirname, 'src', 'tests', 'coverage'].join('/'), безуспешно.

Единственный способ, которым я мог изменить путь к каталогу покрытия, — это указать его в jest.config.js monorepo, но при этом я не могу указать каталог покрытия для каждого проекта.

Кто-нибудь знает, как я могу указать другой каталог покрытия для каждого проекта в monorepo?

Ответ №1:

Вы можете указать другой каталог покрытия для каждого проекта, только если вы используете jest для каждого продукта в отдельности. Если вы используете глобальную конфигурацию ( jest.config.js в корне вашего monorepo), затем ко всем ним применяются одни и те же настройки покрытия, включая выходной каталог покрытия.

Комментарии:

1. как насчет другой настройки проекта (т.Е. Использования реквизита «projects») в jest.config.ts globla? кажется, что он переопределяется в любом случае, в документе не упоминается, что вы заявляете (хотя ваше утверждение верно)

2. это все еще верно в 2022 году?