Как мне разработать плагин для библиотеки, если включение его в качестве peerDependency не дает мне конкретной реализации для использования?
Требования:
Я разрабатываю плагин для popularLibrary.js
, Плагин:
- Вообще не сработает, если
popularLibrary.js
нет - Работает с
v1.x.x
изpopularLibrary.js
- Должен работать, если он включен как зависимость в проект, который использует
popularLibrary.js
- Должен работать, если он включен как упакованный источник вместе
popularLibrary.js
В примере:
<script src="https://some-cdn.com/popularLibrary.js"></script>
<script src="https://some-cdn.com/myMagicalPlugin.js"></script>
Проблемы:
- Когда я установил
popularLibrary.js
какpeerDependency
больше не загружается наnpm install
, Как мне продолжать разрабатывать свой плагин, когда ему нужно импортировать и использовать функциональность, которая существует вpopularLibrary.js
? - Не каждый использует шаг сборки. Если кто-то добавляет минимизированные источники для
popularLibrary.js
а такжеmyMagicalPlugin.js
как этоpeerDependency
разрешить? Нужно ли делать что-то дополнительное / особенное в любой библиотеке для поддержки этого сценария?
0 ответов
Я давно не спрашивал об этом. В конце концов я добавил то же самоеpeerDependency
как devDependency
, так как это необходимо для разработки и тестирования приложения.
В идеале вы программируете на какой-то контракт / интерфейс, чтобы максимально отделить плагин от основной библиотеки. В более конкретном примере у меня есть два сценария WebPack.
Сценарий 1: объединяет библиотеку и использует excludes
ключ для любых прямых зависимостей от основной библиотеки (следует избегать, если вы можете ему помочь, т. е. развязанный)
Скрипт 2: для приложения разработчика использует основную библиотеку и импортирует плагин из источника. Используется с webpack-dev-server для разработки / тестирования
Вы можете использовать WebPackBundleAnalyzer, чтобы убедиться, что вы случайно не связали peerDeps