Spec-Zone.ru › Kotlin 1.9

Настройка проекта Kotlin/JS

Проекты Kotlin/JS используют Gradle в качестве системы сборки. Для удобного управления проектами Kotlin/JS мы предлагаем плагин Gradle, который предоставляет инструменты конфигурации проекта вместе с вспомогательными задачами для автоматизации задач, типичных для разработки на JavaScript. Например, плагин скачивает менеджер пакетов Yarn для управления зависимостями npm в фоновом режиме и может сгенерировать JavaScript-сборку из Kotlin-проекта с помощью webpack. Управление зависимостями и настройками можно в значительной степени выполнять непосредственно в файле Gradle, с возможностью переопределения автоматически сгенерированных конфигураций для полного контроля.

Вы можете вручную применить плагин org.jetbrains.kotlin.multiplatform к проекту Gradle в файле build.gradle(.kts).

plugins {
    kotlin("multiplatform") version "1.9.0"
}
plugins {
    id 'org.jetbrains.kotlin.multiplatform' version '1.9.0'
}

Плагин Kotlin/JS Gradle позволяет управлять аспектами проекта в разделе kotlin файла сборки.

kotlin {
    //...
}

Внутри раздела kotlin можно управлять следующими аспектами:

  • Целевая среда выполнения: браузер или Node.js

  • Зависимости проекта: Maven и npm

  • Конфигурация запуска

  • Конфигурация тестирования

  • Сборка и поддержка CSS для проектов браузера

  • Целевой каталог и имя модуля

  • Файл package.json проекта

Среды выполнения

Проекты Kotlin/JS могут использовать две разные среды выполнения:

  • Браузер для клиентской работы в браузере

  • Node.js для запуска JavaScript-кода вне браузера, например, для серверной работы.

Для определения целевой среды выполнения для проекта Kotlin/JS добавьте раздел js со значением browser {} или nodejs {}.

kotlin {
    js {
        browser {
        }
        binaries.executable()       
    }
}    

Инструкция binaries.executable() явно указывает Kotlin-компилятору на создание исполняемых .js файлов. Это поведение по умолчанию при использовании текущего Kotlin/JS-компилятора, но инструкция явным образом требуется, если вы работаете с Kotlin/JS IR-компилятором или установили kotlin.js.generate.executable.default=false в вашем gradle.properties. В этих случаях пропуск binaries.executable() заставит компилятор генерировать только внутренние Kotlin-библиотечные файлы, которые могут использоваться другими проектами, но не выполняться самостоятельно. (Это, как правило, быстрее, чем создание исполняемых файлов, и может быть оптимизацией при работе с нелистовыми модулями вашего проекта.)

Плагин Kotlin/JS автоматически настраивает свои задачи для работы с выбранной средой. Это включает в себя загрузку и установку необходимой среды и зависимостей для запуска и тестирования приложения. Это позволяет разработчикам собирать, запускать и тестировать простые проекты без дополнительной настройки. Для проектов, ориентированных на Node.js, также есть возможность использования существующей установки Node.js. Узнайте, как использовать предварительно установленную Node.js.

Зависимости

Как и любые другие Gradle-проекты, проекты Kotlin/JS поддерживают традиционные Gradle декларации зависимостей в разделе dependencies файла сборки.

dependencies {
    implementation("org.example.myproject", "1.1.0")
}
dependencies {
    implementation 'org.example.myproject:1.1.0'
}

Плагин Kotlin Multiplatform Gradle также поддерживает объявление зависимостей для определенных наборов исходного кода в разделе kotlin файла сборки.

kotlin {
    sourceSets {
      val jsMain by getting {
            dependencies {
                implementation("org.example.myproject:1.1.0")
            }
        }
    }
}
kotlin {
    sourceSets {
        jsMain {
            dependencies {
                implementation 'org.example.myproject:1.1.0'
            }
        }
    }
}

Обратите внимание, что не все библиотеки, доступные для языка программирования Kotlin, доступны при нацеливании на JavaScript: можно использовать только библиотеки, содержащие артефакты для Kotlin/JS.

Если используемая вами библиотека имеет зависимости от пакетов npm, Gradle автоматически разрешит эти транзитивные зависимости.

Стандартные библиотеки Kotlin

Зависимости от стандартной библиотеки добавляются автоматически. Версия стандартной библиотеки совпадает с версией плагина kotlin-multiplatform.

API kotlin.test доступен для многоплатформенных тестов. При создании многоплатформенного проекта Мастер проекта автоматически добавляет тестовые зависимости ко всем наборам исходного кода.

Если вы не использовали Мастер проекта для создания проекта, вы можете добавить зависимости вручную:

kotlin {
    sourceSets {
        val commonTest by getting {
            dependencies {
                implementation(kotlin("test")) // This brings all the platform dependencies automatically
            }
        }
    }
}
kotlin {
    sourceSets {
        commonTest {
            dependencies {
                implementation kotlin("test") // This brings all the platform dependencies automatically
            }
        }
    }
}

Зависимости npm

В мире JavaScript наиболее распространенный способ управления зависимостями — npm. Он предлагает крупнейший публичный репозиторий JavaScript-модулей.

Плагин Kotlin Multiplatform Gradle позволяет объявлять зависимости npm в файле Gradle, аналогично тому, как вы объявляете любые другие зависимости.

Для объявления зависимости npm передайте её имя и версию в функцию npm() внутри объявления зависимости. Также можно указать один или несколько диапазонов версий, основываясь на синтаксисе semver npm.

dependencies {
    implementation(npm("react", "> 14.0.0 <=16.9.0"))
}
dependencies {
    implementation npm('react', '> 14.0.0 <=16.9.0')
}

Плагин использует менеджер пакетов Yarn для загрузки и установки зависимостей NPM. Он работает прямо из коробки без дополнительной настройки, но вы можете настроить его под свои нужды. Узнайте, как настроить Yarn в плагине Kotlin Multiplatform Gradle.

Помимо обычных зависимостей, есть еще три типа зависимостей, которые можно использовать в Gradle DSL. Чтобы узнать больше о том, когда лучше всего использовать каждый тип зависимости, ознакомьтесь с официальной документацией по ссылке из npm:

  • devDependencies, через devNpm(...),

  • optionalDependencies через optionalNpm(...), и

  • peerDependencies через peerNpm(...).

После установки зависимости npm вы можете использовать её API в своём коде, как описано в Вызове JS из Kotlin.

запуск задачи

Плагин Kotlin/JS предоставляет задачу jsRun, которая позволяет запускать чистые проекты Kotlin/JS без дополнительной настройки.

Для запуска проектов Kotlin/JS в браузере, эта задача является псевдонимом для задачи browserDevelopmentRun (которая также доступна в проектах Kotlin multiplatform). Она использует webpack-dev-server для предоставления ваших JavaScript-артефактов. Если вы хотите настроить конфигурацию, используемую webpack-dev-server, например, изменить порт, на котором работает сервер, используйте файл конфигурации webpack.

Для запуска проектов Kotlin/JS, нацеленных на Node.js, используйте задачу jsRun, которая является псевдонимом для задачи nodeRun.

Чтобы запустить проект, выполните стандартную задачу жизненного цикла jsRun, или её псевдоним:

./gradlew jsRun

Чтобы автоматически запускать повторную сборку вашего приложения после внесения изменений в исходные файлы, используйте функцию непрерывной сборки Gradle: непрерывная сборка

./gradlew jsRun --continuous

или

./gradlew jsRun -t

После успешной сборки вашего проекта webpack-dev-server автоматически обновит страницу браузера.

задача тестирования

Плагин Kotlin Multiplatform Gradle автоматически настраивает инфраструктуру тестирования для проектов. Для проектов браузера он загружает и устанавливает инструмент тестирования Karma вместе с другими необходимыми зависимостями; для проектов Node.js используется фреймворк тестирования Mocha.

Плагин также предоставляет полезные функции тестирования, например:

  • Генерация карт исходного кода

  • Генерация отчётов о тестировании

  • Результаты выполнения тестов в консоли

Для запуска тестов браузера плагин использует Headless Chrome по умолчанию. Вы также можете выбрать другой браузер для запуска тестов, добавив соответствующие записи в раздел useKarma скрипта сборки:

kotlin {
    js {
        browser {
            testTask {
                useKarma {
                    useIe()
                    useSafari()
                    useFirefox()
                    useChrome()
                    useChromeCanary()
                    useChromeHeadless()
                    usePhantomJS()
                    useOpera()
                }
            }
        }
        binaries.executable()
        // ...
    }
}

В качестве альтернативы вы можете добавить целевые браузеры для тестирования в файл gradle.properties:

kotlin.js.browser.karma.browsers=firefox,safari

Этот подход позволяет определить список браузеров для всех модулей, а затем добавить конкретные браузеры в скрипты сборки отдельных модулей.

Обратите внимание, что плагин Kotlin Multiplatform Gradle не устанавливает эти браузеры автоматически, а только использует те, которые доступны в среде выполнения. Если вы выполняете тесты Kotlin/JS на сервере непрерывной интеграции, например, убедитесь, что браузеры, с которыми вы хотите проводить тестирование, установлены.

Если вы хотите пропустить тесты, добавьте строку enabled = false в testTask.

kotlin {
    js {
        browser {
            testTask {
                enabled = false
            }
        }
        binaries.executable()
        // ...
    }
}

Для запуска тестов выполните стандартную задачу жизненного цикла check:

./gradlew check

Чтобы указать переменные среды, используемые вашими запусками тестов Node.js (например, чтобы передать внешнюю информацию в ваши тесты или настроить разрешение пакетов), используйте функцию environment с парой ключ-значение внутри блока testTask в вашем скрипте сборки:

kotlin {
    js {
        nodejs {
            testTask {
                environment("key", "value")
            }
        }
    }
}        

Конфигурация Karma

Плагин Kotlin Multiplatform Gradle автоматически генерирует файл конфигурации Karma во время сборки, который включает ваши настройки из блока kotlin.js.browser.testTask.useKarma в вашем build.gradle(.kts). Вы можете найти файл по адресу build/js/packages/projectName-test/karma.conf.js. Чтобы внести изменения в конфигурацию, используемую Karma, поместите дополнительные файлы конфигурации в каталог с именем karma.config.d в корне вашего проекта. Все файлы конфигурации .js в этом каталоге будут взяты и автоматически объединены в сгенерированный файл karma.conf.js во время сборки.

Все возможности конфигурации Karma подробно описаны в документации.

Сборка webpack

Версия webpack

Плагин Kotlin/JS использует webpack 5.

Если у вас есть проекты, созданные с версиями плагина до 1.5.0, вы можете временно переключиться на webpack 4, используемый в этих версиях, добавив следующую строку в gradle.properties проекта:

kotlin.js.webpack.major.version=4

Задача webpack

Наиболее распространённые настройки webpack можно сделать непосредственно через блок конфигурации kotlin.js.browser.webpackTask в файле Gradle:

  • outputFileName — имя выходного файла webpack. Он будет сгенерирован в <projectDir>/build/dist/<targetName> после выполнения задачи webpack. Значение по умолчанию — имя проекта.

  • output.libraryTarget — система модулей для выходного файла webpack. Узнайте больше о доступных системах модулей для проектов Kotlin/JS. Значение по умолчанию — umd.

webpackTask {
    outputFileName = "mycustomfilename.js"
    output.libraryTarget = "commonjs2"
}

Вы также можете настроить общие настройки webpack для использования в задачах сборки, запуска и тестирования в блоке commonWebpackConfig.

Файл конфигурации webpack

Плагин Kotlin Multiplatform Gradle автоматически генерирует стандартный файл конфигурации webpack во время сборки. Он находится в build/js/packages/projectName/webpack.config.js.

Если вы хотите внести дополнительные изменения в конфигурацию webpack, поместите ваши дополнительные файлы конфигурации в каталог с именем webpack.config.d в корне вашего проекта. Во время сборки все файлы конфигурации .js будут автоматически объединены в файл build/js/packages/projectName/webpack.config.js. Чтобы добавить новый загрузчик webpack, например, добавьте следующее в файл .js внутри webpack.config.d:

В этом случае объект конфигурации представлен в глобальном объекте config. Вам нужно его изменить в своём скрипте.

config.module.rules.push({
    test: /\.extension$/,
    loader: 'loader-name'
});

Все возможности конфигурации webpack подробно описаны в документации.

Создание исполняемых файлов

Для создания исполняемых JavaScript-артефактов через webpack, плагин Kotlin/JS содержит задачи Gradle browserDevelopmentWebpack и browserProductionWebpack.

  • browserDevelopmentWebpack создаёт артефакты для разработки, которые больше по размеру, но создаются быстрее. Поэтому используйте задачи browserDevelopmentWebpack во время активной разработки.

  • browserProductionWebpack применяет удаление неиспользуемого кода к сгенерированным артефактам и минимизирует полученный JavaScript-файл, что занимает больше времени, но создаёт исполняемые файлы меньшего размера. Поэтому используйте задачу browserProductionWebpack при подготовке проекта к использованию в производстве.

Выполните любую из этих задач, чтобы получить соответствующие артефакты для разработки или производства. Сгенерированные файлы будут доступны в build/dist, если не указано иначе.

./gradlew browserProductionWebpack

Обратите внимание, что эти задачи будут доступны только в том случае, если ваша целевая настройка настроена на создание исполняемых файлов (через binaries.executable()).

CSS

Подключаемый модуль Kotlin Multiplatform Gradle также поддерживает загрузчики CSS и стилей webpack. Все параметры можно изменить, непосредственно отредактировав файлы конфигурации webpack, используемые для сборки проекта, но наиболее часто используемые параметры доступны непосредственно в файле build.gradle(.kts).

Чтобы включить поддержку CSS в проекте, установите параметр cssSupport.enabled в файле Gradle build в блоке commonWebpackConfig. Эта конфигурация также включена по умолчанию при создании нового проекта с помощью мастера.

browser {
    commonWebpackConfig {
        cssSupport {
            enabled.set(true)
        }
    }
}
browser {
    commonWebpackConfig {
        cssSupport {
            it.enabled.set(true)
        }
    }
}

Кроме того, вы можете добавить поддержку CSS независимо для webpackTask, runTask, и testTask.

browser {
    webpackTask {
        cssSupport {
            enabled.set(true)
        }
    }
    runTask {
        cssSupport {
            enabled.set(true)
        }
    }
    testTask {
        useKarma {
            // ...
            webpackConfig.cssSupport {
                enabled.set(true)
            }
        }
    }
}
browser {
    webpackTask {
        cssSupport {
            it.enabled.set(true)
        }
    }
    runTask {
        cssSupport {
            it.enabled.set(true)
        }
    }
    testTask {
        useKarma {
            // ...
            webpackConfig.cssSupport {
                it.enabled.set(true)
            }
        }
    }
}

Включение поддержки CSS в проекте помогает избежать распространённых ошибок, возникающих при попытке использовать таблицы стилей из неконфигурированного проекта, таких как Module parse failed: Unexpected character '@' (14:0).

Вы можете использовать cssSupport.mode для указания способа обработки встреченных CSS. Доступны следующие значения:

  • "inline" (по умолчанию): стили добавляются к глобальному тегу <style>.

  • "extract": стили извлекаются в отдельный файл. Затем их можно подключить из HTML-страницы.

  • "import": стили обрабатываются как строки. Это может быть полезно, если вам нужен доступ к CSS из вашего кода (например, val styles = require("main.css")).

Для использования разных режимов в одном проекте используйте cssSupport.rules. Здесь вы можете указать список KotlinWebpackCssRules, каждый из которых определяет режим, а также include и exclude шаблоны.

Node.js

Для проектов Kotlin/JS, нацеленных на Node.js, плагин автоматически загружает и устанавливает среду Node.js на хосте. Вы также можете использовать существующую установку Node.js, если она у вас есть.

Использование предустановленного Node.js

Если Node.js уже установлен на хосте, где вы собираете проекты Kotlin/JS, вы можете настроить плагин Kotlin/JS Gradle для его использования вместо установки собственного экземпляра Node.js.

Чтобы использовать предустановленный экземпляр Node.js, добавьте следующие строки в свой build.gradle(.kts):

rootProject.plugins.withType<org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin> {
    rootProject.the<org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension>().download = false
    // or true for default behavior
}
 
rootProject.plugins.withType(org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin) {
    rootProject.extensions.getByType(org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension).download = false
}

Yarn

Для загрузки и установки объявленных зависимостей во время сборки, плагин управляет собственным экземпляром менеджера пакетов Yarn. Он работает без дополнительной конфигурации, но вы можете настроить его или использовать Yarn, уже установленный на вашем хосте.

Дополнительные возможности Yarn: .yarnrc

Чтобы настроить дополнительные возможности Yarn, поместите файл .yarnrc в корень вашего проекта. Во время сборки он будет автоматически подхвачен.

Например, чтобы использовать пользовательский реестр для пакетов npm, добавьте следующую строку в файл под названием .yarnrc в корне проекта:

registry "http://my.registry/api/npm/"

Чтобы узнать больше о .yarnrc, посетите официальную документацию Yarn.

Использование установленного Yarn

Если Yarn уже установлен на хосте, где вы собираете проекты Kotlin/JS, вы можете настроить плагин Kotlin/JS Gradle для его использования вместо установки собственного экземпляра Yarn.

Чтобы использовать установленный Yarn, добавьте следующие строки в ваш build.gradle(.kts):

rootProject.plugins.withType<org.jetbrains.kotlin.gradle.targets.js.yarn.YarnPlugin> {
    rootProject.the<org.jetbrains.kotlin.gradle.targets.js.yarn.YarnRootExtension>().download = false
    // or true for default behavior
}
rootProject.plugins.withType(org.jetbrains.kotlin.gradle.targets.js.yarn.YarnPlugin) {
    rootProject.extensions.getByType(org.jetbrains.kotlin.gradle.targets.js.yarn.YarnRootExtension).download = false
}
 

Фиксация версий через kotlin-js-store

Фиксация версий с помощью kotlin-js-store доступна начиная с Kotlin 1.6.10.

Директория kotlin-js-store в корне проекта автоматически генерируется плагином Kotlin Multiplatform Gradle для хранения файла yarn.lock, необходимого для фиксации версий. Файл блокировки полностью управляется плагином Yarn и обновляется во время выполнения задачи Gradle kotlinNpmInstall.

Чтобы следовать рекомендуемой практике, закоммить kotlin-js-store и его содержимое в вашу систему контроля версий. Это гарантирует, что ваш приложение собирается с точно таким же деревом зависимостей на всех машинах.

При необходимости, вы можете изменить как имя директории, так и имя файла блокировки в скрипте сборки:

rootProject.plugins.withType<org.jetbrains.kotlin.gradle.targets.js.yarn.YarnPlugin> {
    rootProject.the<org.jetbrains.kotlin.gradle.targets.js.yarn.YarnRootExtension>().lockFileDirectory =
        project.rootDir.resolve("my-kotlin-js-store")
    rootProject.the<org.jetbrains.kotlin.gradle.targets.js.yarn.YarnRootExtension>().lockFileName = "my-yarn.lock"
}
rootProject.plugins.withType(org.jetbrains.kotlin.gradle.targets.js.yarn.YarnPlugin) {
    rootProject.extensions.getByType(org.jetbrains.kotlin.gradle.targets.js.yarn.YarnRootExtension).lockFileDirectory =
        file("my-kotlin-js-store")
    rootProject.extensions.getByType(org.jetbrains.kotlin.gradle.targets.js.yarn.YarnRootExtension).lockFileName = 'my-yarn.lock'
}

Изменение имени файла блокировки может привести к тому, что инструменты проверки зависимостей больше не будут обнаруживать этот файл.

Чтобы узнать больше о yarn.lock, посетите официальную документацию Yarn.

Сообщения об обновлении yarn.lock

Kotlin/JS предоставляет настройки Gradle, которые могут сообщать вам, если файл yarn.lock был обновлен. Вы можете использовать эти настройки, когда хотите получать уведомления, если yarn.lock был изменен без вашего ведома во время процесса сборки CI:

  • YarnLockMismatchReport, который определяет, как сообщать об изменениях в файле yarn.lock. Вы можете использовать одно из следующих значений:

    • FAIL завершит соответствующую задачу Gradle. Это значение по умолчанию.

    • WARNING запишет информацию об изменениях в предупреждающий журнал.

    • NONE отключит отображение сообщений.

  • reportNewYarnLock, который явно сообщает об недавно созданном файле yarn.lock. По умолчанию этот параметр отключен: обычно новый файл yarn.lock генерируется при первом запуске. Вы можете использовать этот параметр, чтобы убедиться, что файл был добавлен в вашу систему управления версиями.

  • yarnLockAutoReplace, который автоматически заменяет yarn.lock каждый раз при выполнении задачи Gradle.

Чтобы использовать эти параметры, обновите файл скрипта сборки build.gradle(.kts) следующим образом:

import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnLockMismatchReport
import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnRootExtension

rootProject.plugins.withType(org.jetbrains.kotlin.gradle.targets.js.yarn.YarnPlugin::class.java) {
    rootProject.the<YarnRootExtension>().yarnLockMismatchReport =
        YarnLockMismatchReport.WARNING // NONE | FAIL
    rootProject.the<YarnRootExtension>().reportNewYarnLock = false // true
    rootProject.the<YarnRootExtension>().yarnLockAutoReplace = false // true
}
import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnLockMismatchReport
import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnRootExtension

rootProject.plugins.withType(org.jetbrains.kotlin.gradle.targets.js.yarn.YarnPlugin) {
    rootProject.extensions.getByType(org.jetbrains.kotlin.gradle.targets.js.yarn.YarnRootExtension).yarnLockMismatchReport =
        YarnLockMismatchReport.WARNING // NONE | FAIL
    rootProject.extensions.getByType(org.jetbrains.kotlin.gradle.targets.js.yarn.YarnRootExtension).reportNewYarnLock = false // true
    rootProject.extensions.getByType(org.jetbrains.kotlin.gradle.targets.js.yarn.YarnRootExtension).yarnLockAutoReplace = false // true
}

Установка зависимостей npm по умолчанию с --ignore-scripts

Установка зависимостей npm по умолчанию с --ignore-scripts доступна начиная с Kotlin 1.6.10.

Чтобы уменьшить вероятность выполнения вредоносного кода из скомпрометированных пакетов npm, плагин Kotlin Multiplatform Gradle по умолчанию предотвращает выполнение скриптов жизненного цикла во время установки зависимостей npm.

Вы можете явно включить выполнение скриптов жизненного цикла, добавив следующие строки в build.gradle(.kts):

rootProject.plugins.withType<org.jetbrains.kotlin.gradle.targets.js.yarn.YarnPlugin> { 
    rootProject.the<org.jetbrains.kotlin.gradle.targets.js.yarn.YarnRootExtension>().ignoreScripts = false
}
rootProject.plugins.withType(org.jetbrains.kotlin.gradle.targets.js.yarn.YarnPlugin) {
    rootProject.extensions.getByType(org.jetbrains.kotlin.gradle.targets.js.yarn.YarnRootExtension).ignoreScripts = false
}

Директория назначения дистрибутива

По умолчанию результаты сборки проекта Kotlin/JS находятся в директории /build/dist/<targetName>/<binaryName> в корне проекта.

До Kotlin 1.9.0, директория назначения дистрибутива по умолчанию была /build/distributions.

Чтобы установить другое местоположение для файлов дистрибутива проекта, добавьте блок distribution внутри browser в скрипте сборки и присвойте значение свойству directory. После выполнения задачи сборки проекта, Gradle сохранит выходной пакет в этом месте вместе с ресурсами проекта.

kotlin {
    js {
        browser {
            distribution {
                directory = File("$projectDir/output/")
            }
        }
        binaries.executable()
        // ...
    }
}
kotlin {
    js {
        browser {
            distribution {
                directory = file("$projectDir/output/")
            }
        }
        binaries.executable()
        // ...
    }
}

Имя модуля

Чтобы изменить имя JavaScript модуля (который генерируется в build/js/packages/myModuleName), включая соответствующие файлы .js и .d.ts, используйте параметр moduleName:

js {
    moduleName = "myModuleName"
}

Обратите внимание, что это не влияет на результат работы webpack в build/dist.

Настройка package.json

Файл package.json содержит метаданные пакета JavaScript. Популярные реестры пакетов, такие как npm, требуют, чтобы все опубликованные пакеты содержали такой файл. Они используют его для отслеживания и управления публикациями пакетов.

Плагин Kotlin Multiplatform Gradle автоматически генерирует package.json для проектов Kotlin/JS во время сборки. По умолчанию файл содержит важную информацию: имя, версию, лицензию и зависимости, а также некоторые другие атрибуты пакета.

Помимо базовых атрибутов пакета, package.json может определять поведение проекта JavaScript, например, определяя доступные скрипты для выполнения.

Вы можете добавить пользовательские записи в package.json проекта с помощью DSL Gradle. Чтобы добавить пользовательские поля в свой package.json, используйте функцию customField в блоке компиляции packageJson:

kotlin {
    js {
        compilations["main"].packageJson {
            customField("hello", mapOf("one" to 1, "two" to 2))
        }
    }
}

При сборке проекта этот код добавит следующий блок в файл package.json:

"hello": {
    "one": 1,
    "two": 2
}

Узнайте больше о написании файлов package.json для реестра npm в документации npm.

Устранение неполадок

При сборке проекта Kotlin/JS с использованием Kotlin 1.3.xx вы можете столкнуться с ошибкой Gradle, если одна из ваших зависимостей (или любая транзитивная зависимость) была скомпилирована с использованием Kotlin 1.4 или более поздней версии: Could not determine the dependencies of task ':client:jsTestPackageJson'. / Cannot choose between the following variants. Это известная проблема, обходной путь приведен здесь.

Последнее изменение: 06 июля 2023
Взаимодействие с JavaScript Запуск Kotlin/JS

© 2010–2023 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/js-project-setup.html

Spec-Zone.ru

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