Tree-shaking
Tree-shaking — это процесс удаления неиспользуемого (мёртвого) кода из итогового бандла. Это позволяет уменьшить размер финального файла и повысить производительность приложения. В результате в бандл попадает только тот код, который используется в проекте.
Tree-shaking включен по умолчанию в tsdown, но при необходимости вы можете его отключить:
bash
tsdown --no-treeshakeПример
Рассмотрим следующий исходный код:
ts
import { hello } from './util'
const x = 1
hello(x)ts
export function unused() {
console.log("I'm unused.")
}
export function hello(x: number) {
console.log('Hello World')
console.log(x)
}Вот два возможных результата в зависимости от того, включен ли tree-shaking:
js
function hello(x$1) {
console.log('Hello World')
console.log(x$1)
}
const x = 1
hello(x)js
function unused() {
console.log("I'm unused.")
}
function hello(x$1) {
console.log('Hello World')
console.log(x$1)
}
const x = 1
hello(x)Что происходит
- С Tree-shaking: Функция
unusedудаляется из финального бандла, поскольку она не вызывается нигде в исходном коде. - Без Tree-shaking: Функция
unusedвключается в бандл, даже если она не используется, что приводит к увеличению размера выходного файла.
TIP
Tree-shaking особенно полезен для оптимизации библиотек или крупных проектов с множеством неиспользуемых экспортов. Однако, если вам нужно включить весь код (например, для отладки или тестирования), вы можете отключить его с помощью --no-treeshake.