Устранение неиспользуемого кода Kotlin/JS
Плагин Kotlin/JS Gradle включает инструмент устранения неиспользуемого кода (DCE). Устранение неиспользуемого кода также часто называется обрезкой дерева. Это уменьшает размер результирующего 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