Я работаю с React Native и использую index.js для управления модулями. У меня много проектов, использующих одну и ту же папку компонентов, которая имеет такую структуру:
components
|_ComponentOne.js
|_ComponentTwo.js
|_index.js
В котором index.js выглядит следующим образом:
export * from './ComponentOne.js';
export * from './ComponentTwo.js';
Теперь допустим, у меня есть три проекта:
- ProjectOne , который использует ComponentOne;
- ProjectTwo , который использует ComponentTwo;
- ProjectThree , который использует оба;
Каждый проект имеет свои собственные файлы, но они ссылаются на эту же папку, чтобы использовать компоненты (например, папку общих ресурсов). Все работает нормально, в то время как все проекты имеют все зависимости для всех компонентов.
Другими словами, у меня проблема, когда один из проектов не устанавливает зависимость для одного из компонентов, , даже если проект не использует этот компонент .
Давайте возьмем в качестве примера ProjectOne , который использует только ComponentOne . Если ComponentTwo (который не используется в этом проекте) имеет зависимость X, я должен npm установить зависимость X даже на ProjectOne , или выдается ошибка. Опять же, ProjectOne не использует зависимость X.
Я могу только представить, что это происходит, потому что index.js проверяет все объявленные экспорты, даже если они не используются.
Я пытаюсь найти альтернативу, чтобы не заставлять устанавливать плагины и другие вещи, которые я даже не буду использовать в своих проектах. Я знаю, что если я удалю index.js и начну импортировать файлы непосредственно в проекты, это будет работать, но я бы хотел сохранить структуру index.js (чтобы иметь возможность использовать синтаксис множественного импорта import { ComponentOne, ComponentTwo } from 'components'
).
Есть предложения?
Обновление:
Ошибка, которую я получаю, когда не npm установочной зависимости X равно
Module `X` does not exist in the Haste module map
Если я его установлю, все работает.
Я использую терминал для установки приложения прямо на телефон Android. Пакет JS автоматически создается Metro (по умолчанию RN).