Публикация библиотеки в npm — руководство
Чтобы опубликовать библиотеку, необходимо:
Подготовить учетные данные, включая учетную запись на npm и токен доступа.
Настроить плагин публикации в проекте Kotlin Multiplatform.
Передать учетные данные плагину публикации или настроить доверенного издателя для непрерывной интеграции.
Запустить задачу публикации вручную или с помощью CI.
В этом руководстве мы используем GitHub для размещения проекта и запуска CI с помощью GitHub Actions.
Пример библиотеки
Для выполнения инструкций и ознакомления с рабочей конфигурацией можно использовать пример проекта библиотеки.
Если вы повторно используете код, не забудьте заменить все примеры значений на значения, соответствующие вашему проекту.
Подготовьте учетные записи и учетные данные
Чтобы опубликовать пакет в npm, необходимо войти на портал npm.
В этом руководстве для настройки публикации вручную вам понадобятся организация и токен доступа.
Создайте простую организацию
В этом руководстве мы публикуем библиотеку от имени организации npm, чтобы избежать конфликтов имен.
Чтобы создать организацию, следуйте инструкциям в документации npm.
Создайте токен доступа
Чтобы вручную опубликовать пакет в npm, вам понадобится токен доступа, разрешающий публикацию пакета в созданной вами организации. Чтобы создать такой токен, следуйте руководству npm.
В этом руководстве используйте упрощенную конфигурацию безопасности:
Включите параметр Обход двухфакторной аутентификации (2FA).
Установите для общих разрешений и разрешений организации токена значение Чтение и запись.
Настройте проект библиотеки
Если вы используете пример проекта, перед публикацией измените заданные по умолчанию имена. Это касается:
имени модуля библиотеки;
имени проекта, указанного в файле
settings.gradle.kts.
После задания имен выполните следующие шаги, чтобы настроить публикацию.
Настройте плагин публикации
В этом руководстве используется официальный плагин npm-publish, который упрощает публикацию в npm. Подробнее о плагине и доступных параметрах конфигурации см. в документации плагина.
Добавьте плагин в проект Kotlin Multiplatform:
Откройте файл
build.gradle.ktsмодуля библиотеки.-
Добавьте следующую строку в блок
plugins {}:// <module directory>/build.gradle.kts plugins { kotlin("npm-publish") version "3.7.0" } -
Добавьте следующую конфигурацию. Обязательно настройте значения для своей библиотеки. Обязательны только параметры
organization,authToken,packageNameиversion. Остальные приведены в качестве расширенного примера:// <module directory>/build.gradle.kts npmPublish { organization = "organization_name_without_the_@_sign" registries { npmjs { // You'll pass your npm token as this environment variable // when you run the command to publish the package authToken = System.getenv("NPM_TOKEN") } } packages { named("js") { version = "0.0.1" packageName = "greetings" readme = file("../README.md") packageJson { license = "Apache 2.0" homepage = "https://github.com/Kotlin/kotlin-multiplatform-web-library#readme" description = "Shared Kotlin/JS Greetings library" keywords = listOf("kotlin", "kotlin-js", "greetings", "shared", "api") author { name = "Kotlin Developer Advocate" url = "https://github.com/kotlin-hands-on/" } contributors = listOf( Person { name = "John Smith" email = "john.smith@example.com" url = "https://github.com/johnsmith" }, ) repository { type = "git" url = "https://github.com/Kotlin/kotlin-multiplatform-web-library.git" } } } } }
В блоке npmPublish {} важны следующие параметры:
Параметр
organizationи блокregistries {}задают данные аутентификации. В данном случае мы используем основной реестр npm и имя переменнойNPM_TOKEN, в которой должен храниться токен при запуске задачи публикации.-
Параметры
packageNameиversionзадают обязательные параметры пакета:Параметр
versionможно опустить, чтобы по умолчанию использовать версию модуля.Параметр
packageNameможно опустить, чтобы по умолчанию использовать имя модуля.
Блок
packageJson {}содержит различные метаданные.
Опубликуйте пакет вручную
Ручная публикация может быть полезна, если вы еще экспериментируете со структурой проекта или хотите самостоятельно реализовать автоматизацию публикации.
Теперь вы можете опубликовать библиотеку в npm с локального компьютера. Для этого выполните следующую команду, подставив вместо YOUR_ACCESS_TOKEN токен доступа, созданный ранее:
NPM_TOKEN=YOUR_ACCESS_TOKEN ./gradlew :shared:publishJsPackageToNpmjsRegistry
После публикации библиотеки она должна появиться в реестре npm. Откройте страницу организации в npm и перейдите на вкладку Пакеты (не на личную страницу Пакеты).

Устранение неполадок
При ручной публикации часто могут возникнуть следующие проблемы:
Следите за полем
versionв конфигурацииbuild.gradle.kts: npm не выполнит публикацию, если пакет уже был опубликован с такой же или более ранней версией.При создании токена для пакета, относящегося к организации, обязательно настройте как общие разрешения, так и разрешения организации.
Публикация с помощью непрерывной интеграции (CI)
Механизм npm «Доверенные издатели» позволяет быстро настроить CI с помощью OpenID Connect. Такой подход избавляет от необходимости создавать и обслуживать токены.
В этом примере мы настроим рабочий процесс с помощью GitHub Actions.
Создайте файл рабочего процесса GitHub Actions
Создайте файл .github/workflows/publish.yml с конфигурацией GitHub Action:
# .github/workflows/publish.yml
name: Publish
on:
release:
types: [released, prereleased]
permissions:
id-token: write # Required for GitHub Actions
# to integrate with npm trusted publishing
contents: read
jobs:
publish:
name: Release build and publish
runs-on: ubuntu-latest
steps:
# Check out the triggering branch
- name: Check out code
uses: actions/checkout@v4
# Set up the JDK to run the Gradle task
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 21
# Run the publishing Gradle task for the library module
- name: Publish to npm
run: ./gradlew :shared:publishJsPackageToNpmjsRegistry
После фиксации изменений и отправки этого файла в репозиторий GitHub, где размещен проект, рабочий процесс будет запускаться при каждом создании релиза GitHub в этом репозитории.
Настройте GitHub Actions в качестве доверенного издателя
Теперь, когда рабочий процесс опубликован, вы можете использовать GitHub Action, чтобы добавить доверенного издателя для своего пакета npm:
Откройте страницу опубликованного пакета.
Откройте вкладку Настройки и найдите раздел Доверенный издатель.
В разделе Выберите издателя нажмите кнопку GitHub Actions.
-
Заполните форму:
имя пользователя GitHub (или организации);
имя репозитория;
имя файла рабочего процесса (в этом руководстве мы использовали publish.yml).
Нажмите кнопку Настроить подключение.
Созданное подключение появится в разделе Доверенные издатели в настройках пакета. Это означает, что рабочий процесс с указанными координатами теперь имеет право публиковать пакеты в npm.
Создайте релиз на GitHub
Настроив рабочий процесс и подключение доверенного издателя, вы можете запустить публикацию, создав релиз GitHub:
-
Укажите в конфигурации
build.gradle.ktsверсию пакета, которую хотите опубликовать. Перейдите в репозиторий GitHub.
На боковой панели справа нажмите Релизы.
Нажмите кнопку Создать черновик релиза (или кнопку Создать новый релиз, если вы еще не создавали релизы для этого репозитория).
Создайте или выберите тег Git (по возможности укажите версию модуля, чтобы сохранить согласованную нумерацию в разных системах).
-
Укажите название релиза (удобно использовать то же название, что и у тега).
Чтобы упростить отслеживание, укажите для тега ту же версию, что и номер версии библиотеки, заданный в файле
build.gradle.kts. Нажмите кнопку Опубликовать релиз.
Чтобы проверить, запустился ли Action, нажмите вкладку Действия в верхней части страницы репозитория GitHub. Вы увидите, что публикация нового релиза запустила рабочий процесс публикации. Нажмите на рабочий процесс, чтобы просмотреть журналы задачи публикации.
После завершения рабочего процесса новая версия пакета должна появиться на странице пакета в реестре npm.

Что дальше
Поделитесь библиотекой с сообществом в Kotlin Slack (чтобы зарегистрироваться, перейдите по адресу https://kotl.in/slack)
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/multiplatform/multiplatform-publish-libraries-to-npm.html