Что значит и как перевести на русский tree shaking?
Tree shaking (встряхивание дерева) — термин объединения модулей JavaScript, обозначающий статический анализ всего импортированного кода и исключение того, что на самом деле не используется.
Для более прямолинейной аналогии рассмотрим живое дерево. Дерево встряхивается, и это заставляет мертвые листья отваливаться, оставляя только живые. В основе tree shaking лежит концепция живого включения кода (live code inclusion): мы включаем части, необходимые для начала, в отличие от удаления ненужных частей в конце — устранения «мертвого кода» (dead code elimination).
Tree shaking зависит от import и export модулей ES2015. Выражения import и export составляют статическую структуру модуля приложения. Когда модули объединяются для развертывания приложения, tree shaker анализирует статическую структуру модуля, чтобы исключить неиспользуемый экспорт, уменьшив размер окончательного пакета.
ES2015 позволяет указывать явный импорт. Например, вместо импорта всей библиотеки RxJS мы можем импортировать именно то, что хотим:import { BehaviorSubject } from 'rxjs/BehaviorSubject';
Это отличается от динамического выражения require, используемого CommonJS или AMD. Tree shaking использует этот принцип для перемещения по зависимостям и исключения ненужных зависимостей для уменьшения размера приложения.
Принцип tree shaking не нов, но он только недавно был популяризирован с помощью сборщика rollup.js, объединяющего модули приложения. Webpack 2 также использует tree shaking. Концепция tree shaking также распространена в Angular с компиляцией AOT.Источник
Когда плоды/листья утрачивают связь с деревом, дерево трясут - плоды падают, дерево остается...
Любой код можно представить в виде дерева вызовов.
В бандл попадает код (например части библиотек/пакетов), который никак не связан с полезным кодом, занимает место но никогда не вызывается, таким образом с деревом кода не связан. Tree shaking помогает устранить такой код, оставив в бандле только то, что реально работает.
Вот например ты потянул здоровенную библиотеку в проект ради пару-тройки функций, а остальные дцать мегабайт просто лежат и вообще ничего не делают. Вот tree shaking, по идее, при сборке бандла эти мегабайты отбросит, оставит только то, что реально вызывается и приносит пользу...