Теперь, когда вы, следуя шагам из этого руководства, создали файл объявлений, пришло время опубликовать его в npm. Есть два основных пути для этого:

  1. включить объявления в npm-пакет
  2. опубликовать в организации @types в npm.

Если вы управляете пакетом, для которого собираетесь опубликовать объявления, то первый способ подойдет лучше всего. В этом случае объявления и JavaScript-код всегда будут вместе.

Table of Contents #

Включение объявлений в свой npm-пакет #

Если у пакета есть главный .js-файл, то в package.json нужно также указать главный файл с объявлениями. Для этого установите свойство types, которое должно указывать на файл объявлений. Например:

{
    "name": "awesome",
    "author": "Vandelay Industries",
    "version": "1.0.0",
    "main": "./lib/main.js",
    "types": "./lib/main.d.ts"
}

Стоит отметить, что поле "typings" синонимично "types" и также может быть использовано.

Также отметим, что если главный файл объявлений имеет имя index.d.ts и находится в корне директории пакета (рядом с index.js), то указывать свойство "types" не обязательно, хотя и желательно.

Зависимости

Все зависимости управляются npm. Убедитесь, что все пакеты с объявлениями, от которых зависит ваш пакет, указаны в файле package.json в секции "dependencies". Например, представим, что мы создали пакет, который использует Browserify и TypeScript.

{
    "name": "browserify-typescript-extension",
    "author": "Vandelay Industries",
    "version": "1.0.0",
    "main": "./lib/main.js",
    "types": "./lib/main.d.ts",
    "dependencies": [
        "browserify@latest",
        "@types/browserify@latest",
        "typescript@next"
    ]
}




Здесь указывается, что наш пакет зависит от пакетов browserify и typescript. Пакет browserify из npm не поставляется со своими файлами объявлений, поэтому для их добавления нужно указать зависимость от @types/browserify. typescript, напротив, поставляется с файлами объявлений, поэтому никаких дополнительных зависимостей не требуется.

Наш пакет представляет доступ к объявлениям из обоих этих пакетов, и поэтому у пользователя нашего пакета browserify-typescript-extension также должны быть установлены эти зависимости. Поэтому используется "dependencies", а не "devDependencies", поскольку во втором случае нашим пользователям пришлось бы устанавливать зависимости вручную. Если бы мы писали приложение, работающее из командной строки, и этот пакет не предполагалось бы использовать как библиотеку, то можно было бы использовать devDependencies.

Опасные места

/// <reference path="..." />

Не используйте /// <reference path="..." /> в файлах объявлений.

/// 
....

Вместо этого используйте /// <reference types="..." />.

/// 
....

Обязательно еще раз прочтите Использование зависимостей для большей информации.

Упаковка зависимых объявлений

Если объявления типов зависят от других пакетов:

Публикация файлов объявлений

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

Публикация в @types #

Пакеты организации @types автоматически публикуются из репозитория DefinitelyTyped с помощью инструмента types-publisher. Чтобы опубликовать свои объявления как пакет в организации @types, отправьте запрос на включение изменений (pull request) в репозиторий https://github.com/DefinitelyTyped/DefinitelyTyped. Больше информации можно найти на странице руководства по участию.

Источник






Поддержите перевод документации:



Поддерживатель | Github Репозиторий


Documentation generated by mdoc.
Молния! Обновления, новости и статьи Typescript.