Каким типом зависимости должен быть @types для опубликованного пакета? - PullRequest
0 голосов
/ 28 февраля 2019

Я создаю пакет, который собираюсь опубликовать в NPM.Я пишу пакет на машинописном компьютере, и у меня настроен файл tsconfig для отправки файла объявления машинописного текста вместе со скомпилированным javascript, чтобы кто-то еще, использующий машинописный текст, мог получить правильную информацию о типе в своей среде IDE - довольно стандартно.Я использую некоторые из пакетов DefiniteTyped, но не уверен, каким типом зависимости они должны быть.Если кто-то использует мой пакет в проекте машинописного текста, мои файлы объявлений будут нуждаться в соответствующих пакетах @types, но если они используют javascript, им не понадобятся эти установленные.Я думаю, что пакеты @types должны находиться в необязательных зависимостях файла package.json моего пакета.Это правильно?

1 Ответ

0 голосов
/ 28 февраля 2019

Согласно Брайану Терлсону , в качестве практического правила следует использовать ранжированные зависимости между равными.

Нормальная зависимость (не рекомендуется)

Вы выбираете версию @types, но нет гарантии, что она будет соответствовать версии, которую используют ваши потребители.Например, вы можете выбрать @types/node@10.0.0, когда ваши пользователи находятся на Узле 11.

Зависимость разработки (не рекомендуется)

Поскольку они не устанавливаются при установке ваших потребителейваш пакет, им нужно будет добавить его в свой проект (при условии, что они используют TypeScript).

Зависимость разработки, отраженная в вашем исходном коде (иногда рекомендуется)

Если вы используете @types/* минимально, возможно, имеет смысл отразить определение используемого типа в вашем коде.Подражайте тому, что делают определения третьих сторон, и сохраните это в своем коде.Недостатком является необходимость синхронизации ваших собственных определений с их исходной версией.

Зависимость от сверстников (рекомендуется)

Средний уровень.Они будут установлены и повторно использованы вашим пакетом и пакетами ваших потребителей.Единственная проблема, которая приходит на ум, - это когда несколько библиотек зависят от некоторых @types/*, но их версии не совпадают.

...