Устранение неиспользуемого кода в Kotlin/JS
Плагин Kotlin/JS Gradle включает инструмент устранения неиспользуемого кода (DCE). Устранение неиспользуемого кода также часто называется tree shaking. Он уменьшает размер результирующего JavaScript-кода, удаляя неиспользуемые свойства, функции и классы.
Неиспользуемые объявления могут появиться в следующих случаях:
Функция инлайнизирована и никогда не вызывается напрямую (что происходит всегда, за исключением нескольких ситуаций).
Модуль использует общую библиотеку. Без DCE части библиотеки, которые вы не используете, всё равно включаются в результирующий пакет. Например, стандартная библиотека Kotlin содержит функции для работы со списками, массивами, последовательностями символов, адаптеры для DOM и так далее. Вся эта функциональность потребовала бы около 1,3 МБ в качестве JavaScript-файла. Простое приложение «Hello, world» требует только функций для работы с консолью, что составляет всего несколько килобайт для всего файла.
Плагин 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–2022 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/javascript-dce.html