Spec-Zone.ru › Kotlin 1.7

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

Если не указано иное, имена функций и модулей могут быть изменены в сгенерированном 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()
    }
}
Последнее изменение: 15 октября 2021
Выполнение тестов в 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