Является ли добавление файла d.ts в пакет npm JavaScript критическим изменением по правилам SemVer?

#javascript #typescript #npm #semantic-versioning #.d.ts

#javascript #typescript #npm #семантическое управление версиями #.d.ts

Вопрос:

Если бы у меня был чисто пакет npm на JavaScript, не зависящий от TypeScript, и я хотел бы добавить к нему файл объявления типа d.ts вместе с новым "types" свойством в package.json указании на файл, будет ли это считаться критическим изменением? Потребует ли это значительного изменения версии в соответствии с SemVer?

Я мог видеть в любом случае, поскольку это вообще не влияет на JavaScript и не нарушает API чего-либо. Однако, если кто-то использует библиотеку в проекте TypeScript и создал свои собственные типы d.ts для библиотеки, это может привести к конфликту с этими типами, например, с ошибкой «Дублирующий идентификатор».

Ответ №1:

SemVer заявляет

Учитывая номер версии MAJOR.MINOR.PATCH, увеличьте:

  1. ОСНОВНАЯ версия при внесении несовместимых изменений в API,
  2. ВТОРОСТЕПЕННАЯ версия при добавлении функциональности обратно совместимым способом и
  3. ИСПРАВЬТЕ версию, когда вы исправляете ошибки, совместимые с обратной совместимостью.

Добавление файла объявления типа явно не исправляет ошибку, поэтому это явно не # 3. Ключевым моментом здесь является то, что если вы добавите файл объявления типа, весь код, использующий API, не будет нарушен, потому что фактический код js не изменится. Поэтому нет никаких несовместимых изменений API, что является другим словом для обратной совместимости.

Это означает, что если вы добавляете файл объявления типа, увеличьте младший номер версии.