Невозможно найти зависимости, когда node_modules существуют в дочерних папках функций

Вопрос по настройке тестирования с Jest & RTL. Я работаю над созданием пакета NPM, который будет продолжать расти и содержать множество функций внутри. Моя цель - заставить наш конвейер запускать тесты в корне. Тогда каждая функция / модуль в src будет иметь свой собственный package.json с зависимостями; то есть: реагировать. Настройка выглядит примерно так:

root
|
|- package.json
|- node_modules // for things like rollup & testing
|- tsconfig.json
|- rollup.config.js
|- jest.config.js
|__src
   |
   |- feature1
   |   |
   |   |- package.json
   |   |- node_modules
   |   |_ tsconfig.extended
   |
   |- feature2
      |
      |- package.json
      |- node_modules

Когда я запускаю jest с "модульным тестом" для базовой функции в feature1, это нормально. Однако, если я попытаюсь запустить тест с ошибкой React it, потому что react не установлен в корне:

Не удается найти модуль "реагировать" из "node_modules/@testing-library/react/dist/pure.js"

Я попытался установить реакцию в корне для целей тестирования, которые решили эту проблему, но теперь у меня будет 2 версии реакции, которые мне не нужны.

Вопрос: могу ли я обновить файл jest.config, чтобы также искать модули во внутренних папках?

module.exports = {
  moduleDirectories: ['node_modules', '<rootDir>/src/Feature1'], // includes feature
  moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'],
  moduleNameMapper: {
    '^Feature1/(.*)$': '<rootDir>/src/$1',
  },
  preset: 'ts-jest',
  roots: ['<rootDir>', '<rootDir>/src/'],
  testEnvironment: 'jsdom',
  testPathIgnorePatterns: ['/node_modules/'],
  transform: {
    '^.+\\.tsx?$': 'ts-jest',
  },
  testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$',
  verbose: true,
};

Могу ли я это сделать, или иметь package.json внутри дочернего уровня - плохая практика?

0 ответов

Другие вопросы по тегам