Компиляция библиотек¶
Это руководство помогает авторам библиотек понять, как использовать React Compiler, чтобы поставлять пользователям оптимизированный код библиотеки.
Зачем поставлять скомпилированный код?¶
Как автор библиотеки, вы можете скомпилировать код библиотеки перед публикацией в npm. Это даёт несколько преимуществ:
- Прирост производительности для всех пользователей - пользователи библиотеки получают оптимизированный код, даже если сами ещё не используют React Compiler
- Пользователям не нужна конфигурация - оптимизации работают без дополнительной настройки
- Одинаковое поведение - все пользователи получают одну и ту же оптимизированную версию независимо от их сборки
Настройка компиляции¶
Добавьте React Compiler в процесс сборки библиотеки:
npm install -D babel-plugin-react-compiler@latest
Настройте инструмент сборки, чтобы он компилировал библиотеку. Например, с Babel:
1 2 3 4 5 6 7 | |
Обратная совместимость¶
Если библиотека поддерживает версии React ниже 19, понадобится дополнительная конфигурация:
1. Установите пакет runtime¶
Рекомендуем установить react-compiler-runtime как прямую зависимость:
npm install react-compiler-runtime@latest
1 2 3 4 5 6 7 8 | |
2. Настройте целевую версию¶
Задайте минимальную версию React, которую поддерживает библиотека:
1 2 3 | |
Стратегия тестирования¶
Тестируйте библиотеку и с компиляцией, и без неё, чтобы убедиться в совместимости. Запустите существующий набор тестов на скомпилированном коде и отдельно создайте конфигурацию тестов, которая обходит компилятор. Так можно поймать проблемы, которые возникают из-за компиляции, и убедиться, что библиотека корректно работает во всех сценариях.
Устранение неполадок¶
Библиотека не работает со старыми версиями React¶
Если скомпилированная библиотека выбрасывает ошибки в React 17 или 18:
- Убедитесь, что
react-compiler-runtimeустановлен как зависимость - Проверьте, что конфигурация
targetсовпадает с минимальной поддерживаемой версией React - Убедитесь, что пакет runtime включён в публикуемый бандл
Конфликты компиляции с другими плагинами Babel¶
Некоторые плагины Babel могут конфликтовать с React Compiler:
- Поставьте
babel-plugin-react-compilerближе к началу списка плагинов - Отключите конфликтующие оптимизации в других плагинах
- Тщательно проверьте результат сборки
Модуль runtime не найден¶
Если пользователи видят "Cannot find module 'react-compiler-runtime'":
- Убедитесь, что runtime указан в
dependencies, а не вdevDependencies - Проверьте, что сборщик включает runtime в результат
- Убедитесь, что пакет публикуется в npm вместе с библиотекой
Дальнейшие шаги¶
- Узнайте о приёмах отладки скомпилированного кода
- Посмотрите параметры конфигурации компилятора
- Изучите режимы компиляции для выборочной оптимизации
Источник — https://react.dev/reference/react-compiler/compiling-libraries