Spec-Zone.ru › Kotlin 1.8

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

Если не указано иное, имена функций и модулей могут быть изменены в сгенерированном 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()
    }
}
Последнее изменение: 10 января 2023 г.
Запуск тестов в Kotlin/JS Компилятор Kotlin/JS IR

© 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

Spec-Zone.ru

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