Невозможно найти зависимости, когда 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 внутри дочернего уровня - плохая практика?