Tree shaking — это техника оптимизации при сборке, которая удаляет неиспользуемый код (также называемый мёртвым кодом) из финального JavaScript бандла. Цель — уменьшить размер бандла и улучшить производительность загрузки.
Tree shaking полагается на синтаксис ES модулей (import/export), потому что эти импорты статически анализируются — то есть бандлер может определить точно, какие экспорты используются ещё до запуска кода.
С require() (CommonJS) это невозможно, потому что зависимости разрешаются во время выполнения.
// Tree shaking работает с этим:
import { add } from './math.js';
// Tree shaking НЕ работает с этим:
const math = require('./math');
Инструменты вроде Webpack и Rollup анализируют граф зависимостей во время сборки и:
Если файл утилит экспортирует три функции, но используется только одна:
export const add = () => {}; // ✅ используется — включена
export const subtract = () => {}; // ❌ не используется — удалена
export const multiply = () => {}; // ❌ не используется — удалена
В финальном бандле появится только add.
import/export)package.json через "sideEffects": falseTree shaking может эффективно удалять неиспользуемый код при использовании CommonJS require() statements, потому что бандлеры могут анализировать граф зависимостей на этапе сборки, чтобы определить, какие экспорты на самом деле нужны.
Новый — ещё не проверен сообществом
Вы