Что мешает tree shaking
Вопрос
Из библиотеки утилит используется одна функция, а в бандл попала вся библиотека. Какая причина самая вероятная?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
- Функция импортирована через именованный импорт
import { debounce } from 'utils' - Библиотека поставляется в формате CommonJS или помечена как модуль с побочными эффектамиправильный ответ
- Проект собран в режиме production, и минификатор склеил все модули в один
- В проекте включён TypeScript, а он отключает удаление неиспользуемого кода
Разбор
Tree shaking опирается на статическую структуру ESM. CommonJS-модуль сборщик не может надёжно разобрать на части, и он попадает целиком. Ещё сборщик оставит модули, которые могут иметь побочные эффекты при импорте, если пакет не объявил "sideEffects": false. Именованный импорт как раз помогает удалению. Production-режим включает минификацию и удаление мёртвого кода, а не мешает им. TypeScript сам по себе на tree shaking не влияет, если не компилирует модули в CommonJS.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.