Spec-Zone.ru › Deno 2

Публикация пакетов

Любую программу Deno, в которой определён экспорт, можно опубликовать как пакет, чтобы другие разработчики могли его импортировать. На этой странице рассказывается, где и как это сделать.

Выбор реестра

  • JSR: рекомендуемый реестр для пакетов, ориентированных в первую очередь на Deno. Он принимает TypeScript напрямую (без этапа сборки), генерирует документацию из комментариев JSDoc и предоставляет пакеты для Deno, Node.js и других сред выполнения.
  • npm: публикуйте здесь, если ваши пользователи в основном работают с Node.js или им нужны инструменты npm. Используйте deno pack, чтобы собрать совместимый с npm tarball из проекта Deno, или dnt для более гибкого конвейера сборки.
  • deno.land/x: устаревший реестр для импорта по HTTPS. Для новых пакетов предпочтительнее JSR.

Публикация в JSR

Укажите имя пакета, версию и точку входа в deno.json:

deno.json
{
  "name": "@scope/my-package",
  "version": "1.0.0",
  "exports": "./mod.ts"
}

Имя всегда включает область (@scope/name). Создайте область на jsr.io при первой публикации.

Проверьте, что будет опубликовано, а затем выполните публикацию:

›_
deno publish --dry-run   # verify the file list and metadata
deno publish             # opens jsr.io to authenticate, then publishes

deno publish проверяет типы в коде и убеждается, что экспортируемые сущности не зависят от того, что находится за пределами пакета, прежде чем загрузить его. Список флагов см. в справочнике deno publish, а сведения об областях, управлении версиями, подтверждении происхождения и публикации из CI — в разделе «Публикация пакетов на jsr.io».

Чтобы увеличить версию между выпусками, можно использовать deno bump-version.

Публикация в npm

deno pack (Deno 2.8+) собирает совместимый с npm tarball из проекта, ориентированного в первую очередь на Deno: преобразует TypeScript, генерирует объявления типов и создаёт метаданные package.json, необходимые npm.

›_
deno pack                # creates the tarball
npm publish ./package.tgz

Для более старых конфигураций или сборок, требующих точной настройки результата (шимы, несколько целевых платформ, запуск тестов во время сборки), используйте dnt — инструмент сборки Deno-проектов для npm.

Рабочие пространства

В рабочем пространстве deno publish публикует все его участники, у которых указаны имя и версия, в порядке зависимостей. Подробности см. в разделе «Публикация пакетов рабочего пространства».

Автоматизация выпусков рабочего пространства

deno bump-version может управлять выпуском всего рабочего пространства. Если запустить его в корне рабочего пространства без указания типа увеличения версии, он определит изменение версии для каждого участника на основе коммитов Conventional Commits, созданных после последнего выпуска, перепишет ограничения jsr: в корневой карте импорта, чтобы ссылки между пакетами оставались согласованными, и добавит запись в начало Releases.md. Правила и флаги для фиксации диапазона коммитов описаны в разделе «Определение изменений версий на основе Conventional Commits».

Стандартная библиотека Deno использует этот процесс в CI — её конфигурацию можно адаптировать для своих нужд. Её рабочий процесс version_bump запускает deno bump-version --import-map import_map.json, форматирует созданные примечания с помощью deno fmt, затем фиксирует результат и открывает PR выпуска с изменениями версий для отдельных пакетов и новой записью в Releases.md. После слияния этого PR и публикации выпуска GitHub запускается второй рабочий процесс, который выполняет deno publish для каждого участника. Так выпуск с тегом сразу попадает в JSR без ручного изменения версий.

Что дальше

  • Управление зависимостями: повседневный рабочий процесс, из которого выросла эта страница
  • Справочники по deno publish и deno pack
  • Документация по публикации в JSR

Последнее обновление: 30 июня 2026 г.

© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/packages/publishing

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API