2016-09-28 6 views
0

Я работаю над веб-приложением React, которое использует библиотеку компонентов, которую мы включаем в качестве модуля npm. Поскольку я одновременно работаю над библиотекой и webapp, я связал библиотеку как модуль в npm.Jest Ignore реагировать на зависимость от связанного модуля в связанном модуле

Каталоги настроены так:

~/Development/ 
| 
|-- myWebapp/ 
| |-- package.json # (react included here as dependency) 
| |-- src/ 
| |-- node_modules/ 
|  |-- jest-cli/ 
|  |-- react/ 
|  |-- myLibrary/ -> /usr/local/lib/node_modules/myLibrary 
| 
|-- myLibrary/  # (linked to /usr/local/lib/node_modules by npm link) 
| |-- package.json 
| |-- src/ 
| |-- node_modules/ 
|  |-- react/ # (included as a devDependency and peerDependency) 

Я пишу свои тесты в Jest (0.8.2).

Я пытаюсь настроить Jest, чтобы не загрузить React from myLibrary/node_modules/реагировать, когда я запускаю тесты для myWebapp. Реакция загрузки дважды приводит к возникновению проблем. Мои тесты проходят, если я rm -r myLibrary/node_modules/react, прежде чем запускать их, но это боль, чтобы удалить и повторно установить React все время.

Я пытался настроить шутя с:

..., 
"modulePathIgnorePatterns": [ 
    "<rootDir>/node_modules/myLibrary/node_modules/react" 
], 
... 

но это похоже на работу

+0

У вас есть решение? Я только что поднял вопрос о github repo Jest: https://github.com/facebook/jest/issues/2447 – olivarra1

+1

@ olvarra1 Не очень, но есть решение. В итоге мы включили «встроенную» версию myLibary в папку в структуре проекта, называемую dist /. Решение заключается только в том, чтобы связывать dist/внутри myWebapp/node_modules/myLibrary/ Мы опубликовали модуль myLibary для частного реестра npm. После этого мы установили myLibary в myWebapp как обычную зависимость, но вошли в myWebapps/node_modules/myLibrary, удалили каталог dist/и связанный dist/с локальной рабочей копии myLibrary, например ln -s ../. ./../myLibrary/dist dist/ – albertlockett

ответ

0

Попробуйте новое регулярное выражение для modulePathIgnorePatterns:.

"modulePathIgnorePatterns": [ 
    "<rootDir>/node_modules.*/react" 
] 

* должен соответствовать любому символу ноль или больше раз. Таким образом, все реакции должны быть исключены.

+0

стрелять в человека, на самом деле это не работало – albertlockett