Публикация пакетов
Любую программу 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:
{
"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
Последнее обновление:
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/packages/publishing