Исключение неиспользуемого кода в Kotlin/JS
Плагин Kotlin Multiplatform Gradle включает инструмент исключения неиспользуемого кода (DCE). Исключение неиспользуемого кода также часто называется удалением неиспользуемого кода. Оно уменьшает размер результирующего JavaScript-кода, удаляя неиспользуемые свойства, функции и классы.
Неиспользуемые объявления могут появляться в таких случаях:
Функция инлайнизирована и никогда не вызывается напрямую (что происходит всегда, за исключением нескольких ситуаций).
Модуль использует общую библиотеку. Без DCE части библиотеки, которые вы не используете, всё равно включаются в результирующий бандл. Например, стандартная библиотека Kotlin содержит функции для работы со списками, массивами, последовательностями символов, адаптерами для DOM и так далее. Все эти функции занимали бы около 1,3 МБ в виде JavaScript-файла. Простое приложение «Hello, world» нуждается только в функциях для работы с консолью, что составляет всего несколько килобайт для всего файла.
Плагин Kotlin Multiplatform Gradle автоматически обрабатывает DCE при создании бандла для производства, например, с помощью задачи browserProductionWebpack. Задачи сборки для разработки (например, browserDevelopmentWebpack) не включают DCE.
Исключение объявлений из DCE
Иногда может потребоваться сохранить функцию или класс в результирующем JavaScript-коде, даже если вы его не используете в своём модуле, например, если вы собираетесь использовать его в клиентском JavaScript-коде.
Чтобы предотвратить удаление определённых объявлений, добавьте блок dceTask в свой скрипт Gradle и перечислите объявления как аргументы функции keep. Аргументом должно быть полное квалифицированное имя объявления с префиксом имени модуля: moduleName.dot.separated.package.name.declarationName
kotlin {
js {
browser {
dceTask {
keep("myKotlinJSModule.org.example.getName", "myKotlinJSModule.org.example.User" )
}
binaries.executable()
}
}
}
Если вы хотите исключить весь пакет или модуль из удаления, вы можете использовать его полное квалифицированное имя, как оно отображается в сгенерированном JavaScript-коде.
Отключение DCE
Чтобы полностью отключить DCE, используйте опцию devMode в dceTask:
kotlin {
js {
browser {
dceTask {
dceOptions.devMode = true
}
}
binaries.executable()
}
}
© 2010–2023 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/javascript-dce.html