Общая проблема
У меня есть библиотека компонентов A, которая уже существует и содержит несколько компонентов:
- Кнопка
- Аккордеон
- Поле ввода
- Таблица
- Автозаполнение
Теперь я хочу повторно использовать некоторые компоненты (например, Поле ввода, Таблица) и предоставить разные стили для них.Однако я не хочу повторно использовать все компоненты (например, Accordion не используется для второй темы), а некоторые компоненты имеют добавленную / отличающуюся функциональность (например, кнопка).Я хотел бы опубликовать эти компоненты вместе с различными стилями в качестве независимого пакета B, который содержит только необходимый код.
Подход и проблемы
Я не хочу много кодадублирование, потому что некоторые вещи могут измениться в пакете A, который в точности должен быть повторно использован в пакете B. Поэтому моя первоначальная идея состояла в том, чтобы относительно импортировать необходимые компоненты из пакета A и просто снова экспортировать их в пакет B в файле public-api.ts
и просто заменитьфайл scss глобального стиля.
Однако я получаю следующие сообщения об ошибках:
error TS6059: File '[...]' is not under 'rootDir' '[...]'. 'rootDir' is expected to contain all source files.
Я уже пытался добавить исходную папку из пакета A в части "rootDirs"
внутри tsconfig.json
пакета B, но безуспешно.
Возможно ли это вообще?Каков наилучший подход для такого варианта использования?
Я вижу следующие другие опции:
- Должен ли я перемещать часто используемые компоненты в общий пакет?Тем не менее, как я могу легко адаптировать стилизацию тогда, когда компоненты уже упакованы?
- Должен ли я создать второй
public-api.ts
в той же исходной папке, что и пакет A, и просто создать второй ng-пакет изта же исходная папка?
Спасибо за помощь.При необходимости я мог бы создать Stackblitz или подобный проект, чтобы проиллюстрировать проблему, но я надеюсь, что общая проблема должна быть ясна.