Устранение неиспользуемого кода в Kotlin/JS
Плагин Kotlin/JS Gradle содержит инструмент устранения неиспользуемого кода (DCE). Устранение неиспользуемого кода также часто называют сжатием дерева. Оно уменьшает размер результирующего JavaScript-кода, удаляя неиспользуемые свойства, функции и классы.
Неиспользуемые объявления могут встречаться в следующих случаях:
Функция инлайнизирована и никогда не вызывается напрямую (что происходит всегда, за исключением нескольких ситуаций).
Модуль использует общую библиотеку. Без DCE в результирующий пакет всё равно включаются части библиотеки, которыми вы не пользуетесь. Например, стандартная библиотека Kotlin содержит функции для работы со списками, массивами, последовательностями символов, адаптерами для DOM и так далее. Всё это функциональное обеспечение потребовало бы примерно 1,3 МБ в виде JavaScript-файла. Простое приложение «Привет, мир» требует только рутины для работы с консолью, что составляет всего несколько килобайт для всего файла.
Плагин Kotlin/JS 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