Как мне разработать плагин для библиотеки, если включение его в качестве 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

Другие вопросы по тегам