Я пытался создать библиотеку, которая требует от своих потребителей использования определенной c стратегии для каждой цели. Моя текущая архитектура выглядит следующим образом:
[Приложение] -> содержит -> [игрок] -> содержит -> [средство визуализации]
В настоящее время Renderer
является интерфейсом, который необходимо заменить для различные платформы:
- Mobile -> использует MobileRenderer
- Web -> использует WebRenderer
У меня есть свобода использования любых пакетов - в настоящее время используется Webpack для приложение и накопительный пакет для библиотеки - и то, чего я мог бы достичь:
Моя библиотека экспортирует интерфейс Player
и функцию createPlayer
, которая возвращает PlayerInterface
. Затем на стороне приложения у меня есть псевдоним Webpack, который разрешает правильную библиотеку платформы на основе входных данных сборки.
Например:
import { createPlayer } from "my-lib";
const player = createPlayer()
Затем мы создаем приложение с
npm run build --platform=web
, в который веб-пакет преобразует импорт my-lib
в my-lib/platforms/web
, который также содержит экспортированную функцию createPlayer
, которая использует правильный рендерер.
Мой вопрос заключается в том, с точки зрения приложения Как мы можем убедиться, что мы импортируем правильный рендерер для каждой платформы во время сборки, позволяя при этом трястись от деревьев (включая только правильные источники)? Я считаю, что использование системы сборки для этого довольно неясно, так как не оставляет четкого следа того, что происходит.
Есть ли лучший способ сделать это?
Бест,