Перейти к содержанию

Публикация TypeScript

В командах невозможно вести разработку приложений без вынесения некоторых частей кода в отдельные npm пакеты. При этом модули, использующие TypeScript, требуют особой конфигурации, которой и посвящена данная глава.

Публикация

Для того чтобы подключать создаваемые декларации .d.ts* с помощью пакетного менеджера npm, их нужно определить как npm-пакет (npm package). В дальнейшем этот пакет можно опубликовать с помощью того же пакетного менеджера npm в npm-репозитории, который может быть как публичным, доступным всем разработчикам, так и приватным, доступным только автору/команде. Кроме того, можно и вовсе обойтись без публикации в репозиторий, подключая пакет с локального диска. Сама публикация здесь рассматриваться не будет, с этим процессом можно ознакомиться в документации к пакетному менеджеру npm, но не будет лишним упомянуть о тонкостях, которые привнес TypeScript.

Говоря о создании npm-пакета, мы подразумеваем создание описания нашего кода в файле package.json. Для того, чтобы компилятор TypeScript смог использовать декларацию .d.ts, ему нужно помочь, присвоив полю types путь до неё.

1
2
3
4
5
// package.json

{
   "types": "path to file declaration .d.ts"
}

Помимо этого с помощью поля typesVersion можно указать декларацию в зависимости от версии TypeScript.

1
2
3
4
5
6
7
// package.json

{
   "typesVersions": {
       ">=3.1": { "*": ["ts3.1/index.d.ts"] }
   }
}

В случае, если версия среды TypeScript не подпадает под указанный диапазон, то разрешение кода будет выполнено с помощью декларации, указанной в поле types.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
// package.json

{

   "typesVersions": {
       ">=3.1": { "*": ["ts3.1/index.d.ts"] } // если версия TypeScript выше либо равна 3.1
   }

   // если версия TypeScript ниже версии 3.1, то будет выбрана декларация, указанная в поле types

     "types": "./dest/index.d.ts", // если версия TypeScript ниже версии 3.1
}

Правила, разрешающие использование версий библиотек TypeScript, полностью идентичны правилам диапазонов версионирования nodejs ranges.

Кроме того, можно указывать несколько диапазонов одновременно. Но нужно помнить, что порядок указания диапазонов важен, так как они могут перекрывать друг друга.

1
2
3
4
5
6
{
   "typesVersions": {
       ">=3.2": { "*": ["ts3.2/index.d.ts"] },
       ">=3.1": { "*": ["ts3.1/index.d.ts"] }
   }
}

Комментарии