Tree-shaking — это техника оптимизации сборки, позволяющая исключать из финального бандла неиспользуемый код. В контексте Quasar это особенно важно, так как библиотека содержит большое количество UI-компонентов, утилит и плагинов, которые могут существенно увеличить размер приложения при неправильной конфигурации.
Quasar построен на модульной архитектуре с поддержкой ES-модулей. Tree-shaking работает на уровне импорта модулей, анализируя, какие функции, компоненты или плагины реально используются в коде.
Ключевые моменты:
named import) позволяет сборщику
исключить неиспользуемые части библиотеки.import Quasar from 'quasar')
блокирует tree-shaking, так как сборщик считает, что используется весь
модуль.quasar.conf.js.Quasar предоставляет два основных подхода к tree-shaking компонентов:
import { QBtn, QCard, QIcon } from 'quasar';
Преимущество: сборщик понимает, какие конкретно компоненты используются, и исключает все остальное. Недостаток: требуется явно прописывать все используемые компоненты.
quasar.conf.js можно настроить автоматическую загрузку
компонентов:framework: {
config: {},
plugins: [],
components: 'all', // или 'auto-import'
directives: 'auto-import'
}
При таком подходе Quasar анализирует шаблоны Vue и автоматически импортирует только те компоненты, которые реально используются. Это позволяет минимизировать размер финального бандла и облегчает поддержку кода.
Quasar предоставляет множество утилит (например, Notify,
Dialog, LocalStorage) и плагинов
(Cookies, Loading). Для минимизации кода:
plugins в
quasar.conf.js:plugins: ['Notify', 'Loading']
import { date } from 'quasar';
date.formatDate(new Date(), 'YYYY-MM-DD');
Импорт всего модуля import Quasar from 'quasar' приведет
к включению всех утилит в бандл, даже если используется одна
функция.
Quasar поддерживает Vite и Webpack как сборщики. Tree-shaking работает корректно при соблюдении следующих условий:
import { ... } from 'quasar').production mode), который
включает dead code elimination.Для Webpack можно дополнительно включить
sideEffects: false в package.json проекта,
чтобы сборщик знал, что модули не имеют побочных эффектов, что улучшает
эффективность tree-shaking.
Не использовать глобальный импорт Любая форма
import Quasar from 'quasar' разрушает
tree-shaking.
Выбирать конкретные компоненты и плагины Перечисление нужных компонентов вручную или использование автоматического импорта.
Следить за сторонними пакетами Даже если Quasar tree-shaken, подключенные сторонние библиотеки могут добавлять лишний код.
Анализировать финальный бандл Инструменты
webpack-bundle-analyzer или
vite-plugin-visualizer помогают убедиться, что ненужный код
исключен.
// Только используемые компоненты
import { QBtn, QIcon } from 'quasar';
// Только используемые утилиты
import { date, colors } from 'quasar';
// Только необходимые плагины через конфигурацию
// quasar.conf.js
plugins: ['Notify']
Использование этих подходов позволяет поддерживать проект легким, минимизировать размер сборки и ускорять загрузку приложения без потери функциональности Quasar.