Spec-Zone.ru › Kotlin 1.6

Устранение неиспользуемого кода в 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

Если не указано иное, имена функций и модулей могут быть изменены в сгенерированном JavaScript-коде. Чтобы исключить такие функции из удаления, используйте изменённые имена в аргументах keep, как они отображаются в сгенерированном JavaScript-коде.

kotlin {
    js {
        browser {
            dceTask {
                keep("myKotlinJSModule.org.example.getName", "myKotlinJSModule.org.example.User" )
            }
            binaries.executable()
        }
    }
}

Если вы хотите исключить весь пакет или модуль из удаления, вы можете использовать его полное квалифицированное имя, как оно отображается в сгенерированном JavaScript-коде.

Исключение целых пакетов или модулей из удаления может помешать DCE удалить многие неиспользуемые объявления. По этой причине предпочтительнее выбирать отдельные объявления, которые следует исключить из DCE по одному.

Отключение DCE

Чтобы полностью отключить DCE, используйте опцию devMode в dceTask:

kotlin {
    js {
        browser {
            dceTask {
                dceOptions.devMode = true
            }
        }
        binaries.executable()
    }
}
Последнее изменение: 07 апреля 2022
Выполнение тестов в Kotlin/JS Компилятор Kotlin/JS IR

© 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

Spec-Zone.ru

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